I agree that a purely random research list isn't ideal, plus I don't like the fact that it only changes when you research a spell - this means that you soon end up with little choice as the spells you didn't like three spells ago are still there. A fixed research tree - like Civ - isn't the solution.
The combining spells into schools is a good idea.
The way I would do it is.
Each spell is in a school, and has a base weighting (could be negative for more advanced spells). This is then increased by each other spell in the school you know, and possibly reduced by each spell in the opposed school. You also get a bonus based on research points. This modified weighting is then used to bias the selection of which spell you get added to the researchable list.
You could then add some Wizard abilities:
Specialist - bonus and penalties for knowing spells increased, bonus for research points decreased.
Generalist - bonus and penalties for knowing spells decreased, bonus for research points increased.
This doesn't stop spells you don't want slowly filling researchable list, I can think of several options:
a) When you research a spell one of the spells is replaced. This could be the oldest, or random based on reversed weighting. You could also include the research spell in the selection - so if it is selected you only get one new spell added to the list.
b) Instead of researching a spell you can reject a spell - this takes a turn, and removes the spell from the list. This should also permanently prevent the spell reappearing, or significantly reduce its weighting. It could also give a penalty to the weighting of other spells in the college.
c) You have the option to not research any spell. While doing so research points are converted to mana. Each turn one spell on the list may be replaced.