I'm always suspicious of unions, as they can blow up pretty nicely. Also, they can always be expressed as an OR when they're on the same tables. So I'm pretty sure this should turn into an OR.

The biggest problem is the creeping complexity. However, I'm still reading with an open mind.