I've encountered this issue across numerous iterations of the game (including demanding a new contract 6 months after signing a long term deal) and usually it's the frustration of constantly dealing with it that drives me away from the each year's version. I think a level that would work is if players didn't start making noise about it until half way through their contracts.
e.g. 1 year contract summer to summer, potentially a player hints in January he's like a new deal.
2 year deal, a chance they ask for an enxtension after the first year
3 years, ask with 18 months left on their deal
etc.
Think this would calm down what to me is a frustrating part of the game which does seem over the top. You never hear it about more than 1 or 2 at a team in a season IRL. But it wouldn't just eliminate something that I accept does happen in real life, just not to the level it occurs in game.
A good compromise?