Using WP_Query with multiple loops on one page in search.php

Alright, I just whipped something up, this should do it, but it’s untested.

<?php
    $premium_args = array(
        'post_status' => 'publish',
        'meta_query'  => array(
            array(
                'key'   => 'seek_premium',
                'value' => 'yes'
            )
        )
    );
    $premium_posts = new WP_Query( $premium_args );
?>
<?php foreach( $premium_posts as $p ) : ?>
    Your output here
<?php endforeach; ?>

<?php
    $free_args = array(
        'post_status' => 'publish',
        'meta_query'  => array(
            array(
                'key'     => 'seek_premium',
                'value'   => 'yes',
                'compare' => '!='
            )
        )
    );
    $free_posts = new WP_Query( $free_args );
?>

<?php foreach( $free_posts as $p ) : ?>
    Your output here
<?php endforeach; ?>

<?php if( 0 == count( $premium_posts ) && 0 == count( $free_posts ) ) : ?>
    No results
<?php endif; ?>

I also feel like that’s a lot easier to read and to follow than your current code, so if you get both working, usually the best practice is to go with the one that’s most readable. Naturally, with this you can implement have_posts() and such, but I just wanted to get the general idea across, namely using meta_query.