The TEOZ feature of & to put two arrows in the same row is nice, but it doesn't handle the general problem. Many people over the last six years have asked for sequence diagrams to allow arrows between different points in time, which would be rendered as slanted arrows. I need this myself. As far as I can tell there is no way to do this, whether using PUMA or TEOZ.
If you want a syntax suggestion, here is a very simple one: append +N to an arrow specification to put the target N rows down, i.e. N steps later in time. Also allow -N to put the target N rows up.
For example, if Alice and Bob concurrently send each other messages and the messages cross in the fabric, this description represents that situation and would render crossing arrows:
Alice -> Bob+1
& Bob -> Alice+1
It would be convenient, but not necessary, to allow a symbolic label for the destination row so authors don't have to count.
To me this seems easy to implement. You just need to apply a rotation transform to the arrow line, the arrow head, and the attached text if any.
Let me know what you think.