This off-season has been fun but I think it could be even more fun. Player movement based on their actual market value could be achieved by implementing this idea.
For the off season; when a player's contract is up, he becomes a free agent. I wouldn't change that. What I would like to see is for every other player to become a restricted free agent at the end of the season with his existing contract as the qualifying offer.
Then what you do is you set a date somewhere around the middle of August. Prior to that date, any player that hasn't gotten an offer from another team can notify their team that they renounce their free agency and will continue on their current contract which the team must then honor. However if that date passes without the player making that declaration, then the team has the option of continuing the player's contract as a qualifying offer or renouncing the player's contract. The player would still be a restricted free agent. One week before training camp the team would have to make a final decision about that player's contract status either honor it or renounce it. You'd still have the same rules as far as restricted free agents who get an offer sheet from another team in terms of time period to decide to match or not.
Just think of it, every player in the league is on a contract year every year this way. I also think it will cut down on overpaying for mid level players. I think it could be good for everyone (well GMs might hate the extra work). On top of that, just think of all the rosterbation that could happen over each summer!