The way to handle this use case is configure the cache with "InactiveOnStartup" set to true. Then:
1) Create cache
2) Start cache. (no state transfer occurs due to "InactiveOnStartup")
3) For each region:
a) register classloader
b) activateRegion (state transfer for that region occurs and uses the correct classloader)
It would be nice to support doing it the way you described. Requires better integration between the StateTransferManager and the RegionManager.