So effectively you want to remove the ability for out of contract players to choose where they go.
No they can choose where they go, that's the part of the system that is 100% fine.
But the club that they choose to go to should be made to give up the compensation forwarded to the club they have left, not the competition. In effect last year clubs 6 gave Melbourne another pick by shifting down the draft order, those clubs had nothing to do with the transaction.
The compensation should be decided by an AFL panel, then the club that wants the free agent can choose to pay the compensation or not take the free agent? So in effect the only thing stopping the player from getting to their destination is if the club doesn't want to pay the compensation set by the AFL.
This would stop scenarios where players like Frawley were valued at pick 3 when Franklin was pick 19. They can assign value much like the current father son system. Under a system like that Frawley would have been at best pick 18 from Hawthorn to Melbourne. Melbourne are compensated, Hawthorn don't get to stockpile talent without having to give up anything and the rest of the competition doesn't have to give up a spot in the draft to accomodate the move. Doesn't restrict player movement and keeps the principles of equalisation in place.