How to fix the loop statement

Perhaps just being sure that you set your image data within what WordPress calls “the loop” (aka inside that while where $post is set so that get_the_ID returns the info for the post currently being looped over) will get you running. Here is one idea how you might accomplish that:

<?php
  if (have_posts()) :
    while(have_posts()) :
      $i++;
      if(($i % 2) == 0) :
        $wp_query->next_post();
      else :
        the_post(); 

        // so 
        $featured_image_data = thrive_get_post_featured_image(
                                 get_the_ID(),
                                 $options['featured_image_style']
                               );
        $featured_image = $featured_image_data['image_src'];
        $featured_image_alt = $featured_image_data['image_alt'];
        $featured_image_title = $featured_image_data['image_title'];

        $post_format = get_post_format();

        if (isset($options['meta_post_date']) && 
            $options['meta_post_date'] == 1 && 
            isset($options['meta_post_date_type'])) {
               $post_date = thrive_get_post_date(
                              $options['meta_post_date_type'],
                              $options['relative_time']);

        }
        ?>
        <?php tha_entry_before(); ?>
        <li class="post post-r post-single">
        <?php tha_entry_top(); ?>

… etc