Buggy Boolean Operation

I’m having some issues with a Boolean difference operation producing some strange NGons that are messing with my model.

I’ve examined the geometry and can’t find any reason for this to be happening. The cutting templates I’ve used all seem to properly pass through the faces they’re intended to cut. What is the problem here? I’ve uploaded the model here.