Let home town team extend longer contracts in addition to giving them as much money as they can. The good players would spread out over the league. Even if all the good players wanted to play in the big markets, those teams wouldn't have the money to pay them all anyways. And the home town team would be able to offer them more security with the longer contract. Problem solved.