Okay, I do this type of transition work in my game currently and it works great. Admittedly, I saw this post really late at night and I really need to go to sleep. Tomorrow I'll screenshot some of my events and show you a little of how it's done, but a few hints until then:
Do not use Wait or any other system thing for timing. This will more times than not be at least a tiny bit off from the actual audio files in use and, as I'm sure you've noticed, tiny differences make for a big problem with audio. Instead, you should use Audio.PlaybackTime(Tag) for everything. Then, you can use Audio>Seek to for lining up your tracks. Remember, though, if you're looping a track, the PlaybackTime will keep going past the looppoint (ie, it'll count past the end of the audio file) so you'll also need to seek your guide track back to 0. Lastly, you need to recognize that the events aren't going to be absolutely accurate, but you should use correct values. So if your loops is 6.345 seconds, you should run your events when PlaybackTime is > or = to 6.345.
And, lastly, if someone sees this and is curious about how to find the most accurate timing for stuff, here's a good formula for it. If your measures are at a strict tempo, it's BeatsPerMinute/60*BeatsPerMeasure. So 144/60*4 would be 144 bpm in 4/4 time. Then, you can multiply that number by however many measures are in your track to get the loop length.
So when I get a chance tomorrow, I'll walk you through a bit more of this in greater detail with screenshots (and probably an example).