How to set up custom Entity Storage per bundle?
I'd strongly recommend against doing that. That's what separate entity types are for, bundles are just variations with different settings/configurable fields.

The assumption in many places is that all entities of a type a stored in the same places, for loading, querying and so on.

You could probably make it work by replacing the storage and have every relevant method (save, delete, load, query, ...) branch of into two different methods. Very likely more work and more complicated than just doing this for a separate entity type. and some things are impossible to get right (e.g. doing queries against a field shared by multiple bundles. core expects that to work).