Thanks David! I didn't really do anything fancy in engine, just put all 6 layers of my music as separate tracks on the same AudioStreamSynchronized stream, which was then played by the same AudioStreamPlayer node. There's a method for setting the volume of a specific track in the AudioStreamSynchronized stream.
Ideally I would have liked for each mushroom to have spatially positioned sounds but didn't work out how to do that and I suspect that would require custom scripts which was more than I could manage in the timeframe. Anyway luckily it turned out that the mix of the music was nice just as non-diegetic sound.
As a side note, I tried to follow your tutorial on exporting to WebXR and it was all going well until the final step, which errored out because Godot couldn't open a specific zip file in the export template or something :(