I always thought that a solution to this was a a system like they have in soccer where you have to pay the club for them to be released from their contract. Or the Japanese Baseball approach where you post your players ability and MLB team have to pay you to negotiate with that player. Would be a revenue stream for teams across the league.