How to filter wp_get_recent_posts() to only posts that have thumbnails?

You can pass arguments to pass meta_query to your wp_get_recent_posts() function. wp_get_recent_posts() makes call for get_posts(), so you can make use of all the arguments get_posts() or WP_Query uses. As per your need.

$args= array(
        'meta_query' => array(array('key' => '_thumbnail_id')) 
);
$recent_posts = wp_get_recent_posts($args);

Along with other arguments you want to pass to your function.

Please check for proper syntax. Haven’t tried the code.