Personally I think there should be some sort of ranking system to evaluate players, and from there extrapolate max amount they'd be able to get. Not sure how you would go about doing that, and what other problems it will make, but I think that's the best way.
You want LeBron? Sure, give him a 30 million (random number, probably low balled) contract... You're going to have a tough time building a roster to surround him with, but hey, you have LeBron.
The current MAX contract structure is too dependent on time served rather on than talent of player.