How about the NBA has a one week camp for high school seniors to show what they got. Based on their play, and body of work during their four years of high school, the NBA designates X number of players eligible for the draft if they so choose to. The others are forced to go to college for a minimum of 2 years before they're eligible for the draft. The NCAA would allow these high school players to go to the camp on the NBA's dime and not lose their immature eligibility, if you want to call it that.
If the player is selected in the first round, he's not eligible to go to college protecting the NBA team from ever losing that player. If one of the eligible draftees is not selected in the first round, they can choose to go to college but would have to stay for 2 years. And the NBA team that drafted that player in the second round would lose the rights to that player, if they did not sign that player before some designated date right before the draft two years later. That way it protects the player whose stock has risen dramatically to be able to get guaranteed first-round money. But would also allow the teams that drafted players that are still second round caliber to sign them.
I think this approach is a win-win for all. The player coming out of high school who is ready to play in the NBA or at least very close to playing at that level can choose to enter the draft. That keeps the quality of the NBA game solid. But it also protects NBA franchises from making mistakes and drafting players that aren't ready and may never be ready. Lastly it maintains a level of quality for the NCAA where very good players have time to develop while maintaining the quality of play in the college game that's hurt by one and done players who leave before leaving a solid or very high impact for their college program.
Granted this leaves the door open for a program to recruit a high school player that doesn't end up fulfilling his scholarship, but would prevent programs like Kentucky who might try to stockpile a bunch of top picks and end up losing multiple recruits leaving empty scholarships. For example maybe UConn would not have lost Andrew Bynum in this situation, while the team that signs a LeBron James would end up losing him.
They could do something similar for the college players after their sophomore and junior years to attend a camp that is invitation only to be further evaluated but this time rated for draft selectability. This way it gives them an idea where they stand. Unlike the current rule that doesn't allow them to return to college if they enter the draft, let these rising juniors and seniors choose to do so, but just once. Similar to the above, if the player is selected in the first round they can't return protecting the NBA franchise, but if selected in the 2nd round or not drafted, they can return, but the NBA team would retain their rights till some designated date before the next draft.
Doesn't that sound like a win-win for everyone?