I have got this to work by not using the <?php setup_postdata($post);?> and instead using the ‘$featured_post->ID’ method.
Still confused by the need to use two different methods for different parts of the site, as I said my code above works fine on the blog single.php template but not when used in a block – if anyone knows why I’d love to know.