Well first make sure all the boolenable surfaces are Cean and i mean ultra clean with no problems. You can use the nodes themselves to spot when the things should be keyed off.
But yes booleans are slow. I would suggest you use rendertime CSG if possible or raytracing boolean.