I save skill points once my finishing spot in competition(s) is determined, and then at season start I resign all the guys with ?'s and then go ahead and assign the held points. I never let a contract run out unless a player is retiring from my team. But then I also tend to buy any needed replacements last 2 days of season and sell off the others a few hours into the new season.