my home league is based on the original roto league, does keepers as such:
each player has a contract, A B or C. A is for players drafted this year, B is for players kept one year, C is for players kept two years. When a player is a C, you can't keep them the next offseason. Players are kept at the same salary they were drafted at (auction draft). You can keep as many players as possible. We have some convoluted rules but I imagine anyone undrafted could be kept for $1 (lowest salary).
I quite like this format because it is quite hard to build a "dynasty" where you can dominate the league for a long time. Additionally, it makes it interesting for valuing players. To pull an example from my league, I'd much rather have a $7 Chris Davis than a $43 Miguel Cabrera. It makes trading interesting because, if you are out of contention, you can try to acquire low-priced talent to keep for next year. It is also interesting because different teams can come into the draft looking completely different. For example, this year in my home league, I am likely to keep a large portion of my roster but will enter the draft with most of my money tied up.
I imagine this system could be tweaked if needed. What are your thoughts about this?