I have been in a union before (nearly a decade of industrial electrician/power plant operator work before I obtained my CS degree). You bet there is corruption in some unions, but perhaps it is different in the "skilled trades" though, at least it seems that way from my personal experience.
Avoiding blue collar work is a primary motivation for my transition to full time software dev...we'll see how it turns out though because the office culture/work environment is very foreign to me in many ways.