So, this is even more technical than my general capability, but, I'm good with ideas.
What allows the Youtube actual player code to play that 'embedded' won't.
Is it a encrypted code within the player, or is it just some Youtube server expection (POST/GET blah.swf?I_AM_THE_REAL_THING_BABY!).
If not encrypted within the player...can it be faked?
And, on to next idea if a better answer can't be found to your question and my ideas above.
Use RSS feed/embedded player code for most items. The RSS API is prob less likely to change as often.
Find some way to detect (or at worst, teach human using your functions) if the original didn't play due to 'no embed allowed', have second function run that attempts using the 'Youtube' code.
Though it is just as likely to break if/when Youtube updates again, it's less likely to break ALL of this player.