Well, the problem that I see with your solution is failover. So, imagine a node goes down and you do no rebalancing. If numOwners were two, keys that belonged to that node will only be present in one node, and if this one fails...
I would agree. Unfortunately, this is a difficult problem to solve. I've now worked on a few projects that all suffered from the same issue and it is so severe that going to production becomes questionable.
The cache was so large that joins continually failed. It forever stays in an INSTANTIATED state until it times out and moves to FAILED. I've mentioned this in another thread. Basically, we're trying to find something between no rehashing and a full rehash. Something that does't kill our cluster because state transfer takes 10 minutes yet gives us the opportunity to eventually end up fully balanced.