Blender Booleans still need a lot of work – they’re unreliable, and even when they do work, they tend to mess up other areas of your mesh. There’s a Boolean Python script floating around that works reasonably well, give that a go, and there was a CVS Boolean Blender version that had some improvements – see if you can find that. Finally, if you must use Booleans, try separating the faces of your mesh that are going to have holes cut in them first. Then cut the holes in the separated object and rejoin it. This will help you avoid the distortions you’d get in other areas of your object.