It is a zero sum thing - it would be nice for players to stay longer, but that means the players do not have the freedom to switch jobs normal people have. That players move keeps interest up in lots of markets.
I think the reason football lacks the parity of baseball is simply a matter of the sports themselves. If you accept that the person with the largest impact on any baseball game is the pitcher (and it is - pitching is not 90% of the game or 50% of the game, but it has more impact than any other position), then that baseball teams rotate starting pitchers means that the team fielded can vary wildly in quality. To put it another way, the 1972 Phillies went 59-97. The Phillies were 30-11 in Steve Carlton's starts that year. So for those 41 starts, the Phillies were actually pretty good relative to whom the opponent was putting out there. Because of this, even a bad team is a favorite against a good team occasionally.
Football, with the dependencies on team continuity, and that the same personnel play every game (assuming health), the advantages are much more permanent. Also, physical advantages are much more profound. (size of linemen and such)
A salary cap would not change this reality at all. In fact, what baseball has done with its tax system is create a system where all 30 markets are healthy and all of them can build competitive teams according to the realities of the city and fan base. Now clearly the Yankees and Red Sox and Dodgers have more room for error than the Rays and Royals. But the Rays and Royals can absolutely afford to keep core guys - if they don't it is because of choice. And that is all you can ask for regarding balance. Can a well managed team succeed anywhere - and the answer in baseball is hell yes.