That sounds good in theory, but IMO it doesn't really work.
There is risk in signing any transfer or new contract. You are increasing the risk (but conceivably also the reward) when you attempt to sign them long term.
If you sign a new transfer for the next 3 seasons, you would then have to sign him for 5 seasons. Which is probably okay if he is a young 22-23 year old like we typically bring in. But if the player ends up not working out, now you are on the hook for much longer. OTOH, if the player is even better than you expected, they still have a lot of leverage even while they are under a long term contract. If Hojbjerg tomorrow decided to "boycott' the team, he would drive his price way down even despite having just signed.
But let's say you have a 28 or 29 year old. You probably only want that player for 1-2 seasons. Which means you have to sell. Otherwise, they will have "run down" their contract to under 2 years already. If you sign that player to a 3-4 year deal, then you are paying for a 31 or 32 year old season where probably no one wants them anyway, including yourself.
It's okay for players to be sold for less money because they have 1 less year on their contract. It's even perfectly okay to let players run down their contracts completely and leave for free. It's all a matter of projecting future value and timing.
You can't become so paranoid of players leaving that you sign them all to uber-long contracts at high salaries just so they don't go. In that situation, it's less that you "kept" them but that you are stuck with them.