Sounds like an interesting problem! I would approach this with a mixed strategy, rather than a single ML model to do the matching. You have the right intuition here about using a pre-trained text encoder. Have you tried this idea out first?

For example, you can encode show_movie in table 1 and role in table 2 into embeddings, and then use a vector database (Pinecone and Chroma to name two) to do efficient similarity matching for these columns. With this, you can match rows if they pass a minimum similarity (such as 0.9). The likelihood of this similarity doing well will depend on the data the text encoder was trained on -- you can look into models that are trained or finetuned on databases like IMDB, or finetune one yourself! A BERT encoder should work fine.

If you observe the precision isn't as high as you'd like (i.e. too many matches), you can further filter using standard SQL on the dates:

WHERE born < year_start AND year_end < died