How to avoid Mesh Distortion when Curves cutting themselves, especially with Subsurface Modifier?
As you're talking about booleans it looks like you're open to do it with mesh (rather than only curve), so here is a solution:


Create a torus (Major Segments: 24/Minor Segments: 8).
Duplicate one of its circle, make it another object, extrude on the Z axis.
Boolean the 2 objects.
In Top Ortho view cut in half with the knife, then mirror the whole object.
Use the knife to add some topology: K to activate, Z to cut through, C to cut orthogonally.
Give your object a Subsurf and Shade Smooth to test the result.
Use the same technic and also the Spin tool for the top of the object.