Your initial suggestion seems to fit the use case of manual rehashing, or rehashing upon certain conditions. We have a JIRA for it: https://issues.jboss.org/browse/ISPN-1394
For your second question, if the cache loaders are marked shared=false, it assumes that each server has its own database, and so preloading will work that way.
If they have a common database i.e. shared=true
Now how will the servers know which keys to load in its state?
As the hash range is determined at runtime for distribution mode.