My two cents... it sounds like your league makeup might be similar to my main money league - we have a wide variety of skill level and people are spread out all over the place. Given that, I think you are on the right track. Here is how we implemented our system:
We had many managers who did not want the super-star players being kept year after year, so we wanted a system to promote turnover. So what we did was to make teams forfeit draft picks to keep a player - the picks that you forfeit are based on where a player was drafted or kept the year before. We allow teams to keep 4 players, and each player can be kept by forfeiting a draft pick 4 rounds higher than where they were drafted/kept the year before. An example: I draft Josh Hamilton in Round 11 in Year 1, I can keep him by forfeiting a 7th round pick in Year 2, I can keep him again by forfeiting a 3rd round pick in Year 3, and I cannot keep him after that.
This system has worked out really well for us. It rewards you for finding those diamonds in the rough in the later rounds of your draft but also makes you think about the true value of the higher end players - using my example above, Josh Hamilton was a steal for me because he was 1st-2nd round value but I only had to use a 7th round pick to get him. This year will be a much tougher call.
Also, on your draft pick system, we do the exact same thing - the 5th-12th place finishers get the 1st-8th picks, with the top 4 teams (who finish in the money) getting picks 9-12 in reverse order.
"The government cannot give to anyone anything that it does not first take from someone else"