I have a similar case near where I live, and I came to the conclusion that mapping all of the loops with ways was the only available method of representing such a construction properly. It looks a bit messy, but ultimately the goal is to represent what’s on the ground.
What you could still do would be to add layer tags to the ways to clarify what is going on where they cross. And, perhaps, incline tags if you have that data available. But otherwise I don’t see what else could be done to improve it.