We have had these keeper rules for the past six years and they have worked very well. Our league is 10 teams, start 1QB, 1 RB, 2 WR, 2 Flex, 1 TE, 1K and 3 IDP's. Total roster is 18.
We keep 3 offensive players and 1 def player. What keeps the teams level is we you can only keep 1 player per position. Before that rule, people who got lucky with two or three stud RB's were set for several years. Most keep 1 QB, 1WR and 1RB however some with a top TE like Gates or Clark with keep them over another position.
Everyone must keep 4 players, which makes the draft easy as it simply 14 serpentine rounds.
Also we don't set a year limit on how long you can keep a player. We enjoy the continouity, we know who has Payton Manning team. You don't have to relearn the whole teams each year. This also sets up some blockbuster trades mid season, as teams try to balance winning this year versus having the best keepers next year.
We also have a keeper/draft pick trading period a few weeks prior to the draft. That allows people who may not have the best keepers to trade draft picks to teams that may have better players that can't be kept. So players do move around.
Overall, we find our keeper league more enjoyable.