Hey Mark
No one can accuse you of “hanging around” 
I salute your enthusiasm 
I must say that I haven’t had much trouble with anything audio based with OpenHab2, but I have only used WebAudio, Sonos & ChromeCast & Chromecast Audio to date.
I’ll review what you’ve written here, to figure out what you’re trying to achieve, then compare it with my experience.
Hopefully I’ll find something that helps.
FYI
I didn’t have any trouble in the early days when I tried getting a CCA to play the doorbell.mp3 or barking.mp3 files that are in the OpenHab2 folders, by using the Play command from a rule.
playSound("barking.mp3")
I did drop an MP3 file of my own in that folder to test with, which worked well.
This inspired me to carry on experimenting.
Good luck.
Stuart
If it helps, this is the rule I have in place that plays a choice of radio stations when the water flow to our shower gets hot 
To attach it, I’ve renamed it and added .pdf to the end.
bathroom.rules.pdf (2.8 KB)
The following rule relies on -
A PlayURL string for the ChromeCast Audio device.
A Trigger Channel of a Velbus input device
A virtual switch item which holds the state of the house (awake or asleep), this is toggled by our Velbus based Alarm Clock. (This prevents music from being played (automatically) if someone has a shower late at night)
A virtual Dimmer Item that holds the radio station selection (as a number), mapped to a selection list in HabPanel.
1=BBC Radio 2,2=BBC Radio 4 Extra,3=Planet Rock FM,4=Absolute Radio,5=BBC 6 Music
It might well be the very last rule here that is of interest to you, as it directs the TTS output to the CCA, which I use to cancel the music playback.
rule "Bathroom Music"
when
Channel 'velbus:vmb7in:c5053467:0B:input#CH1' triggered PRESSED
then
bathradio = (BathroomChromeCastSourceChoice.state as Number).intValue
//say("Number"+bathradio, "voicerss:enGB", "webaudio")
if(House_Awake.state === ON){
// say("Up to temperature while house awake", "voicerss:enGB", "webaudio")
// say("Number"+BathroomChromeCastSourceChoice.state, "voicerss:enGB", "webaudio")
// sendBroadcastNotification("Number"+BathroomChromeCastSourceChoice.state)
if(bathradio == 1) {
Bathroom_PlayURI.sendCommand("http://bbcmedia.ic.llnwd.net/stream/bbcmedia_radio2_mf_p")
say("Radio choice is number"+BathroomChromeCastSourceChoice.state+" BBC Radio 2", "voicerss:enGB", "webaudio")
} // BBC Radio 2
if(bathradio == 2) {
Bathroom_PlayURI.sendCommand("http://bbcmedia.ic.llnwd.net/stream/bbcmedia_radio4extra_mf_p")
say("Radio choice is number"+BathroomChromeCastSourceChoice.state+" BBC Radio 4 Extra", "voicerss:enGB", "webaudio")
} // BBC Radio 4 Extra
if(bathradio == 3) {
Bathroom_PlayURI.sendCommand("http://tx.planetradio.co.uk/icecast.php?i=planetrock.mp3")
say("Radio choice is number"+BathroomChromeCastSourceChoice.state+" Planet Rock", "voicerss:enGB", "webaudio")
} // Planet Rock
if(bathradio == 4) {
Bathroom_PlayURI.sendCommand("http://live-absolute.sharp-stream.com/absoluteradio.mp3")
say("Radio choice is number"+BathroomChromeCastSourceChoice.state+" Absolute Radio", "voicerss:enGB", "webaudio")
} // Absolute Radio
if(bathradio == 5) {
Bathroom_PlayURI.sendCommand("http://bbcmedia.ic.llnwd.net/stream/bbcmedia_6music_mf_p")
say("Radio choice is number"+BathroomChromeCastSourceChoice.state+" BBC Six Music", "voicerss:enGB", "webaudio")
} // BBC 6 Music
}
if(House_Awake.state === OFF){ say("Up to temperature while house asleep", "voicerss:enGB", "webaudio") }
end
rule "Bathroom Music OFF"
when
Channel 'velbus:vmb7in:c5053467:0B:input#CH1' triggered RELEASED
then
if(House_Awake.state === ON){
say("Cooled while house awake", "voicerss:enGB", "webaudio")
say("Bye", "voicerss:enGB", "chromecast:audio:3f5b31d2c7d792037ef036c498c40a1c")
// Bathroom_Control_Chromecast.sendCommand("STOP")
}
if (House_Awake.state === OFF){
say("Bye", "voicerss:enGB", "webaudio")
say("Bye", "voicerss:enGB", "chromecast:audio:3f5b31d2c7d792037ef036c498c40a1c")
}
end