How about doing a Unite using the geometry to subtract as the tool and choosing to keep the tool.
Then do a Subtract of the kept tool from the body that resulted from the Unite.
My simple test seemed to work OK.
Dell 7530 Precision, Win10, 32GB. Developing in: Java | C | KF
Production: [NX12.0.2 MP1]