My view is, and always will be that the best solution is a points-based value for players, with a squad not to exceed a certain amount. Money paid is largely irrelevant, except that the points value dictates the minimum wage for that player (thus preventing players taking pay cuts to stay).
As a player progresses through the ranks from juniors to Test level, their points value goes up. The formula for which would need to be calculated fairly carefully, and the maximum allotment also considered.
In order to help clubs cope with players making sudden rises, their points value to a club is as at the time the contract is registered with the NRL. So, A. Glenn signed his 2 year contract with the Broncos as a regular first grader (last year). He is valued as such next year, despite playing Test football this year. However, if the Broncos were to release him and he went to another club, it'd be a new contract, so he'd be valued as a Test player.
Concessions for loyal players could still occur. As an added incentive to stay, their points value stays a percentage below their maximum points level if they remain with the one club, with that percentage rising along with the time they have been at the club. However, as soon as they leave the club, their value goes up.
Thus if a team wants to buy internationals/Origin players from another club, that's fine, but it makes it harder for them to retain depth. But if they have no depth and need a star player, they can pay whatever they want to entice them there.
If a team is developing their stars (a la Melbourne), then they too can pay what their players deserve, and their overall squad value is slightly lessened because they did raise them.
It won't stop a club throwing, say, $700K at Greg Inglis to leave Melbourne, but it will mean they can't throw $700K each at Inglis, Slater, Smith and Cronk and keep them.