Each school could, at the beginning of the academic year, list out a set of schools (limited in number - maybe 5-10) that players could not transfer to without having to sit out a year. That would be part of the scholarship “contract” for that year. When you renew the following year, same thing. This way student athletes know going into the academic year what places they can or can’t transfer to, schools have some say over things and everything is laid out prior to the start of the year. Student athlete signs, everything is settled. If the student decides to transfer, they already know what the restrictions are and can pick from a broad range of remaining schools.
For example, KU could always list K-State and Mizzou. Duke and UNC could always list each other, etc.
By limiting the number, schools would have to be specific about the restrictions, rather than setting really broad restrictions that offer no choice at all.