When I was in school there was an NCAA rule against outside employment by nature of something along the lines of every dollar you earned reduced your scholarship by an equal amount or some such nonsense which did effectively make working unavailable to the scholarship athlete. I believe that rule has been changed and there is no longer a NCAA rule prohibiting outside employment but I could be mistaken. Outside comp is another matter. Each university (the whole school not just athletics) have sponsorship deals in place (the soda in the dining halls, the coffee shop in the library, etc.) and to allow each athlete to go and seek their own sponsors could bring harm to the school and their contracts or put the school in a light that they don’t want to be in, not to mention how it would impact amateurism. There is no easy solution.
I don’t disagree that the system is doomed to be dirty but regardless of how the rules are written, short of paying each player how ever much you want, it will always be dirty. 30 years ago in a non-revenue sport I saw countless dirty acts on my own team and I’m sure it continues today. The numbers were much different but for there to be boosters willing to pay softball players, swimmers, field hockey players, and gymnasts that really brought nothing more than victories that no one outside of the sport cared about tells me there will always be this dirt around college athletics and until colleges stop sponsoring the programs it is always going to be there in some form.