Unfortunately one thing about the NFL and the way the salary cap is, teams have a difficult time keeping guys who are old and expensive, so many times guys don't finish careers where they started. I wish there was some way to change this. Also many guys don't know when to say when. Two guys from my team, the Titans, McNair and Eddie George, got cups of coffee with other teams before hanging it up.
Guys don't last that long in that league without being ultra-competitive. Most will always want to prove to themselves that they can still play. It's hard to go from being one of the best players in the sport to having someone else tell you that you're not good enough anymore.
There's also a segment of those who don't know when to quit that either mismanage their finances or are taken advantage of by those who claimed to be helping them do so, so they keep playing because they need the money.
So what would you propose: every team has one place available for an uncapped salary slot for a player who has over X number of years of service with the team (8 years, 10 years, etc.)? You could also stipulate that the player had to make his NFL regular season debut with the team (that would cover players like Eli who was not drafted by the team he spent his entire career with). Call it the "Veteran Tag" or something.
I'm sure there's some reason that it wouldn't work, such as owners not wanting to fork over big money to over-the-hill players who are not likely to contribute even if it might be a good PR investment to keep a "lifer" or longtime fan favorite in the team's market. Instead, the owners might at best give these guys cushy front office jobs at much lower salaries.