Or perhaps change the format from a pure draft.
1) Everybody ranks their players like now.
2) Every team selects their top ranked player. If only one team has selected a player, he goes to that team. If multiple teams have selected a player, then his team is chosen by a lottery, which could be weighted on the basis of how a team finished.
3) Every team that did not get their 1st pick, selects their next highest ranked player that is still available. If only one team has selected a player, he goes to that team. If multiple teams have selected a player, then he goes to the team that had ranked him highest. If two teams had given him the same ranking, then a lottery is held.
4) Step 3 is repeated until all teams have selected a player.
5) Now that all teams have one pick, the process of steps 3 and 4 is repeated until all teams have a 2nd pick. The process is repeated for the 3rd pick.
Weighting for any lotteries should be based on the record, and not the finishing place. If 5 teams finish 8-14 there is no reason to make any distinction based on points scored. If some other teams are 7-15 or 9-13 the difference should be fairly minor. Possible weighting: 3 + sqrt(#losses). This should discourage throwing games to get a good draft pick.
Teams that enter during the season should have a wieghting adjustment. There is no reason to give a team that takes over a 0-22 team a much better draft than another team that takes over a 22-0 team, when they will start the season at 0-0. Perhaps new teams could be weighted solely on the basis of games played.