The solution that worked for me was to add this to functions.php:
// Add support for responsive embedded content (YouTube, Vimeo, etc.).
add_theme_support( 'responsive-embeds' );
It replaces the ridiculous 500px width with responsive classes, I don’t know why this isn’t included by default or as an option in the Vimeo block.