movement. In pro soccer players can be bought by other teams even if the player is still under contract. For example X team wants Y player that is currently playing on Z team. The two teams negotiate a fee that X team will pay Z team if they sign Y player (after negotiating new contract with Y player). Transfers can only be made during transfer windows even though tampering is going on constantly. Most European leagues have a transfer window from January 1st to January 31st and then a summer one from July 1st to August 31st with a little bit of variation on those dates. X team and Z team could also negotiate a swap of players (with the players' consent). If there is a swap, all players in the swap have to agree and sign new contracts with the new team. Teams can also loan players out to other teams for a specified amount of time (often a year). Any player who's contract has expired is a free agent and can sign with any team without a transfer fee.
So for college football, let's say Toledo has a player that Ohio State wants, they'd have to pay Toledo a negotiated sum if they end up signing that player. The player could only move during a transfer window. Ohio State gets the player they want and Toledo gets paid for investing in and developing the player which they can use to re-invest in their program. They could also negotiate a swap of players (if the players agree). Ohio State could also loan out a player (again with the player's consent) for a year to Toledo who is promising but may be buried down the depth chart. They could make one long transfer window or split them into two windows.
What I proposed here isn't perfect but I do think it's a better that what's currently going on.