While the default osm map style might not render things the way you want, CyclOSM and Humanitarian styles do seem to render them more accurately.

You could map it using relations with inner and outter ways, so that each feature would exclude the other feature and not overlap.