Easiest way is to use with the hole, and set pointer-events to none so events can pass through to the under. Of course there are many other ways to handle events such as wrapping them with a and handling events on it.
You don't need to limit yourself to the basic shapes and use complicated clipping. Make things felxible enough so you can copy&paste path data generated by tools like inkscape.