What I decided to do was go with 5 keepers with variable 'contracts.'
Keeper 1: 1 year of control
Keeper 2: 2 years of control
Keeper 3: 3 years of control
Keeper 4: 4 years of control
Keeper 5: 5 years of control
Each year you get a new keeper. However, I am thinking that if you want to shift one of your players that you originally gave a 2 year contract to, you can shift that player to the 5 year contract, however you lose one of your keeper contracts.
There is also a minor league keeper, though I'm not sure how this is going to work. I like the idea of being able to control a minor leaguer, which hopefully will also keep bad teams interested.
This will require a little bit of tracking from me, but hopefully not too much. By doing it this way, I was able to balance the desire to be able to keep a few players for a longer period of time.