WP Query – order posts by meta field first and then order the rest

You should be able to name and sort your meta query clauses like this:

$meta_query = array(
    'relation' => 'OR',         
        'foo' => array(
            'key' => 'expiring_date',
            'value' => date('Ymd'),
            'compare' => '>',
            'type' => 'DATE'
        ),
        'bar' => array(
            'key' => 'expiring_date',
            'compare' => 'NOT EXISTS'
        ),
        'baz' => array(
            'key' => 'expiring_date',
            'value' => ''
        ),              
    );

    $query->set( 'meta_query', $meta_query );
    $query->set('meta_key', 'expiring_date');
    $query->set('orderby', array( 
        'foo' => 'ASC',
        'bar' => 'DESC',
        'baz' => 'ASC',
        'title' => 'DESC' 
    ));

More information can be found in this introduction post.