Why do you need to reference both thread_type and generic_id? Couldn't you make sure that generic_id is unique across the various tables? If not, then you could add another table (maybe called "COMMENTABLES"?) that maps the local generic_id to a globally unique id which you could then reference from the comments table. If you have properties that are common to things which can be commented on, then you could add them to that table as well.
Yeah.. that's why; the legacy schema has a separate table and sequence for every type of topic. Kind of unwieldy.
I've been thinking about it a bit. I may go down the road of merging all the commentable types into a single table. It'll just be a bulky table. Events, which has LOTS of unique fields, I may make a child table for that holds all the unique stuff. Not sure if that's the best way to do it tho.