When we set our keep-4 league up, we took a look at the previous 3 or 4 years worth of top players at the positions, and came to the conclusion we didn't need to set any keeper limits because players don't stay near the top for long enough to unbalance the league that much.
With hindsight, we were correct. Even the very elite players haven't remained on the same teams because teams are looking to move them before they fall off. LT has been traded recently, Priest was traded once during his peak and again right before he broke down. Peyton has changed teams recently, Owens has changed teams twice, Moss wasn't kept going into last season, Harrison went back on the wood pile, etc.
Also, I'll note that our keepers are optional keepers, keeping 1 costs you a 1st, keeping 2 costs you a 1st and 2nd, etc. So there are plenty of occasions where teams don't keep players because they want to go after players who weren't kept or rookies, and if you didn't use your pick on a keeper you select an undrafted player with it, essentially picking before the keeper teams. We've had teams not keep anyone and win the league that year.
I think I'm the only team who has been in the playoffs every year and been in the running every year but one for best regular season record, and I've only managed it by revamping my keepers every season. Sitting pat on the same players just hasn't been a winning strategy, things change too much from year to year.
Edit to add: We did, in one league, institute a maximum of 2 players kept at any single position.