Hmm, well, I'm not sure how complicated this would be to implement on your end, but it would be nice if there was a more straightforward way to change what topics are available for research.
I'm half-way through a small mod that changes topic discovery so that every time you research a topic, you get a chance of making related topics available for research (so, for example, there's a 10% chance that Fantasy will become available for research after you research Medieval). The problem is, there are two separate functions that construct topic selection UIs, one for the research window and one for the game creation window, and one of them's anonymous so I can't just hook it. (The publisher contracts also need to know what topics are available, and that function is also anonymous, if I remember correctly.)
What I'm doing is changing general.getTopicOrder() and Research.TOPICS_VISIBLE to get around this, but it's a pretty hacky solution. I'm not sure exactly what you could do on your end that wouldn't be inconvenient. If it was me, I'd probably make an array, like "Research.Topics," storing all the topics along with a status for each, "Researched," "Discovered," or "Hidden." That's probably an hour or two of work, though, to re-arrange the functions I mentioned above and change the saving/loading and mod loading code.
(BTW, you closed that other thread before I got a chance to thank you, so thanks for that event key!)