I can see that neither treeqbsp nor txqbsp support any "weird" content types, only clip. Oh well, after reading your post, a couple light bulbs went on.
How much does the engine have to support? I guess quite a bit more?
Hopefully, we can switch RMQ totally to origin brushes instead of hiprotate one day. We'll have to include the map compiler as well as the engine, but there's not really a problem with that.

Treat origin brushes like clip brushes, it seems:
Yeah, or like hint, skip... what have you.
Apparently, an origin brush is actually part of the rotating object entity:
Yes, that was clear to me before, because of the way you construct them in a map editor. You select both the origin brush and the (door, whatever) and turn both into an entity. Yep. And when the map loads, all that remains from the origin brush is its ... origin, I guess, because it's treated like a special content type. Or maybe it's indeed stripped by the map compiler. Too tired to think about that now.
identifying the center point for rotation
Yeah, that must be done so the engine knows what to rotate the brush around - otherwise it rotates it around '0 0 0'.
It's all a big hack, but a much better one than the hiprotate business. Just thinking about func_movewalls makes me sick.