Why is wp_reset_postdata() restarting the loop from the first post?

wp_reset_postdata() restores the post from main query, which you do not seem to be using here at all. So before final the_title() call you jump out all the way to that post.

Your code seems to be tad problematic to me because both your outer and inner loops continuously rewrite $post global. If you move away from that in inner loops (by using versions of functions that take post/id to act on) you will likely escape multiple overrides/resets and issues like that.

Something like this:

while ( $my_query->have_posts() ) : $my_query->the_post();

    foreach ( $post->actors as $actor ) :

        echo get_the_title( $actor );

    endforeach;

endwhile;