When I boolean I usually want to subtract a primative shape from a open edged mesh object, for example the tail cove under the shuttle bay on the connie. When I use the subtract command, it wont leave any part of the primative, like you relate. I have found that using Union then deleteing the unneeded vertexes the easiest way to go in this instance. The new faces created then usually have to have their normals flipped. Boolean is a tricky thing and I dont know all its idiosyncrosies, there are many ways to skin this cat so to speak, but you might want to try this method. In any case its a little bit of work to get what you want.