Every 29+ age player is looking for the 8-year retirement contract. GMs would be wise to avoid them.
For the most part, the GM's that give out those contracts at the time care about the 1st or 2nd year, not 5+ years from now, because if it doesn't work in the short term, they're out of a job anyway and someone else has to deal with it. If GM's were guaranteed their job for say 10 years, they could afford to not just keep an eye on, but focus on the longer term more often than not. Since their employment depends on players winning, and they must spend at least a certain amount every year, they are forced to go after talent. There is a low supply of freely available talent since every player isn't a free agent every year, so they have to work with what's available. Rarely is a Tavares out there, if he's even actually available right now. More likely than not, he's going back to the island. Since those guys aren't out there with any regularity, you're left with Lucic, Gaborik, Eriksson, Ladd, Clarkson, and whatever other crap.
Same thing in the NBA. Most of the guys that get those massive contracts aren't all that good, they just have great timing. Free agents at the right time, and teams must spend money. Not to mention that if teams didn't sign guys as quickly as they could on July 1st, the PA would be out there yelling collusion. The baseball union was doing that this winter.
It would be great if GM's could hold off, but there are just too many external and internal pressures that make them do it. Lower the UFA age, shorten the max contract, keep the hard cap. That's about the only way to change it. Try and make it so that players can't even re-sign until the week of their free agent year. Every player has to hit the Tavares situation. Anything to increase the supply of talent every summer. All that, or get rid of the cap so that term doesn't matter anymore.