You could create a scene that is structured like this:
- Node (with script)
- StreamPlayer1
- StreamPlayer2
The script would expose helper functions for playing and cross-fading music.
Then save this as a scene, make it a singleton with auto-load, so it will continue playing/update as you change scenes, and you will be able to access it from all scenes.
Now all you have to do is to implement a "cross fade" within the script, which can be done by playing something on both StreamPlayers and using two Tweens to change the volumes over time.
Edit: it made me want to investigate that.... and I came up with an easy to use music manager that can play music with multiple cross-fade and delaying support (without tweens though). Pretty basic but works well, I might submit it on Github and the assetlib :D