There are viable solutions to the transfer portal stuff. The most obvious one - that for certain reasons seems to be a non-starter - is that you let schools pay players under multi-year contracts and give both sides legal recourse.
You could also view scholarships more like a salary cap and assess penalties against cap space for transfers in or out. Or just make every scholarship a minimum of 2 years regardless of whether the kid is still there - that would at least encourage schools to invest in kids beyond a season.