For sure you have the right idea... I find that the best way to keep a player longer is to play him every day.. and give the ones you want to keep extra training when you can. If you train him as often as you can when he is young, helps too. I like my players to be in my team for at least a handful of seasons, the more the better. I've only been able to keep one player his whole career, and it took a
lot of extra training. But he was the special one that generated with my team. I am also a proponent of high physical stats to have fit players that break less often so they can play two matches in a day if need be.
I prefer mid season to avoid bidding wars, I find them too tedious & expensive.