You probably can by creating custom providers. Then you would have 3 different mappings based on path (i.e. 3 different provider one for azure blob, one for file system etc), i.e.
// Maps a directory to the provider
StorageHelper.MapStoragePath("~/images/", mediaProvider);
StorageHelper.MapStoragePath("~/pdf/", pdfProvider);
StorageHelper.MapStoragePath("~/files/", filesProvider);
But I would second Brenden. What exactly the benefit? I'd rather have files store in one place - lets say azure blob and have a process that synchronizes your directory with pdf files on remote directory to azure blob (if they are on remote server). You don't need 3 different storage providers here. It will add complexity without much of a benefit.