Just wanted to chime in that Cloudflare does cache videos, so unless youre videos are each extremely large and you're doing huge amounts of traffic, you should be able to leverage a lot of their service to stream videos. It's kind of a case-by-case basic:
https://community.cloudflare.com/t/mp4-large-files-cdn/550/4
You would just set your page rules to cache 'everything': https://support.cloudflare.com/hc/en-us/articles/218411427
What is the average size of your videos? You might also want to run some scenarios based on your current bandwidth and visits to determine how much your current host would charge you to host your videos.
There are APIs for Youtube and Vimeo -- there's examples here, but it's not as straightforward as the regular video API that every browser knows (which Hype exposes through its normal video embed system).
The API is pretty extensive: Youtube Play Pause API function
But there are also helper scripts which expose additional functionality like Mediaelement JS. They have some baked-in support for Youtube: mediaelement/docs/usage.md at master · mediaelement/mediaelement · GitHub
While playing -- 'Youtube' would be hidden. On hover, it is not hidden. For example, on our site, it appears like this on hover:
But it's just the content during playback.