The market also dictates these things. If the fans push back - by not buying tickets and not watching games - that gets the league's and the players attention more than anything.
People don't seem to mind. You also have a whole generation of fans who are loyal to the player vs the team - witness all the Curry jerseys you see at the Garden when GS comes to town.
The league tried to address this by implementing the Super Max, but a lot of these guys (Kemba included) apparently don't care because they already make tons of money. Back in the days of Antoine & Kenny Anderson and his 7 cars when players maybe weren't quite as smart about their money, the Super Max may have had its intended affect - but this generation of players seems to have learned from all that.
There are no easy answers and the only people it really seems to bother are fans like those of us here who are team first and see winning a title as the main objective.
The NFL still has the best system - made possible because the average career is so short and because the impact of a superstar isn't nearly what it is in basketball.