WP_Query and NULL meta keys

I do not believe there is a way to do both queries in one within WordPress.

If the filters you have in place are working and aren’t injecting raw user input into the database query then what is the issue? that is exactly what the filters are there for.

If you are uncomfortable using the filters, then you could do two seperate queries to the database to achieve the same result. It would mean a small performance hit (depending on the size of the database) but this could be mitigated by using the transients API to cache the results.

EDIT

If you need to add a key to all your posts already published, something like the below should do the trick it will loop through all products that have no meta key _average_rating and add one of 0. UNTESTED

I normally do this based on a secret $_GET parameter in admin the delete it after it has run.

$query = new WP_Query( [
    'post_type'      => 'product',
    'posts_per_page' => -1,
    'post_status'    => 'publish',
    'meta_query'     => [
        [
            'key'     => '_average_rating',
            'compare' => 'NOT EXISTS'
        ]
    ]
] );

foreach( $query->posts as $post ){
    update_post_meta( $post->ID, '_average_rating', 0 );
}