This is not trivial to do as once you have set a specific page to be an aggregation of posts (being a posts page), wordpress will “forget” the initial information it gets of the page itself and will behave like it was a normal home page of a blog. This means that all the global variables used in the loop will not be ralated and will not indicate the page itself, and therefor API like the_title
that rely on the global information will not return the same values as it would have if it was a normal page.
The way to solve this, is to create a specific page template to be used with this page, and in it use get_option( 'page_for_posts' )
as the post id parameter used to all the API calls that you make, so instead of has_post_thumbnail( $post->ID )
you will have has_post_thumbnail( get_option( 'page_for_posts' ) )