I've been talking to Ambrose, who has successfully been a part of a keeper/auction league for years and years and years. His league runs based on DiamondMind and the previous year's stats, so there are a few idiosyncracies.
They hold an auction and build up 40-man rosters. Each player gets a contract for that first year that is equiv to his auction price. That player is yours for life, until you trade or release him. That said, you have to keep giving him a raise every year (10%--not too shabby), and though the league min for a first year player is 100k, on year 3, he immediately gets bumped up to 1m. In year 5, he bumps up to 5m, and in year 7, he bumps up to 10m. So, yeah, you can keep Sizemore for six years, if you like, but you can't keep him for 100k the whole time, or even at 10% wage increases. If he's good enough to keep for 6 years, by the 6th year you'll be paying him over 5m. $5m is a lot to be paying a guy--Ambrose now has Manny at 7.6m. But that can all be fudged.
Ambrose says that teams typically cut around 1/3 of their rosters every year because they don't want to have to pay the scheduled salary increases (and/or they're rebuilding). The real steals come from drafting a guy and sitting on him for 2 years at ~300k until he breaks out.
Because they use previous year's stats, they don't usually need mid-season pickups from the free agent pool, so the process they have is clunky (players are put on auction on the fly). But I would suggest that we use some sort of pre-season rating system (BP) to affix a dollar amount to all the free agents in the pool. So should you need to dip into there, you have to pay the price BP pre-affixes to the player. And then they're yours, as normal. If you cut a player, you're responsible for some fraction (if not all?) of his salary.
I don't see keeping players "forever" as being a bad thing, but apparently, the consensus on Saturday was that it's a bad thing. Whatever.
Finally, Ambrose's league changes the payroll based on the previous year's performance, and I think we should have bonuses based on overall standings as well as based on winning certain clusters of statistical categories (like triple crown, say), or, hell, you even get a bonus if your guy gets the cy young!
So I think this gestures towards a model of what we should strive for. It's a lot of work for someone to keep track of all the salaries, perhaps, but it seems more fair over the longrun than a short list of keepers with arbitrary 3-year contracts (or whatever).
Finally, here's the url to his league: www.isbl.com