link featured image to external link

In WordPress attachments are treated as posts, with their own titles, excerpts and metavalues. So if a post has an attachment there are two sets of metavalues, one for the post itself and one for the attachment.

You are using update_post_meta( $post['ID'] ... to store the url. So it is stored as a metavalue of the post.

You are retrieving with get_post_meta(get_post_thumbnail_id() ..., so you are looking for a metavalue of the attachment. To retrieve it you must not use get_post_thumbnail_id() but $post['ID'], because that’s where you stored that url.