Okay so thank god I have finally got to the bottom of why flash player, real player and many other apps ignore the default sound output setting and try to select my bluetooth headset.
If an app in in Mac OS requests a sound device but the audio resolution is too high (like 96kHz) instead of changing the resolution of the channel or upsampling the sound or reporting some kind of useful error to the user it simply doesn’t play sound or in my unusual case it selects the next sound device.
This was a hard to find fix because most people reported it as sound not playing at all because they only had one output device.
Thanks for nothing Apple 😉 hope this is on your lepoard TODO list. Oh yeah thanks to every company that didn’t even acknowledge my bug report. Even an automated email saying “we have recieved your report and ignored it” would have been better.