That's relatively easy to do.rule' for teams to be able to keep guys that have become franchise cornerstones.
You have to make sure that the current team is the only one capable of giving the player an amount of money larger enough than the next best offer. There are rules in this direction, but even the 2011 CBA fell short. One extra year and 3% of difference in raises (no compunded) is not enough to constiture a Godfather offer when you are a superstar, or a franchise cornerstone.
Those types, right now, are only losing one year with a moderate increase, and you can more than make up for it later. The Rose rule is a step in the right direction, but it is very hard to enter that club so its overall impact is limited.
I think we need a general revision of the number of years and the % raises, plus other benefits attached to staying with the current team.
For instance, a player option to extend the contract X years. A reverse ETO of sorts. A right that would be granted to the player when he reaches X years in a row playing for a team.
But whatever, the point is that the current team needs to be able to offer MUCH more than other teams, but a much more, let's say controled. So franchises don't destroy themselves.
That's a matter of decreasing the level of protection for the player until you get to a point where the risk is shared fairly. Like a threshold of reg season games played under which the contract becomes only X% guaranteed. Starting in year X (maybe three segments, depending on age).