So in fact there are at least 25 joins here.

I'm wondering if there's anything that can be done that doesn't require massive restructuring of the db or the views...

Is there anything here that could create some kind of "loop" in the optimizer?
It would seem the 10g optimizer is doing something radically different than the 9i optimizer.