Exclude posts with specific metadata from search?

You need an additional parameter meta_query in the WP_Query arguments.

$query_args = [
    'posts_per_page' => -1, 
    's' => esc_attr( $_POST['keyword'] ),
    'post_type'  => 'visitor',

    'meta_query' => [
        'key'     => 'visitor-hide',
        'value'   => 'yes',
        'compare' => '!=',
    ]
]

or in cases like yours (query by single custom field):

$query_args = [
    'posts_per_page' => -1, 
    's' => esc_attr( $_POST['keyword'] ),
    'post_type'  => 'visitor',

    'key'     => 'visitor-hide',
    'value'   => 'yes',
    'compare' => '!=',
]

You can find more about custom field parameters in WP_Query here.