Adding widgets with Featured Image via the Customizer run hundreds of queries

The issue boils down to this bit of code in WP_Widget::display_callback():

$was_cache_addition_suspended = wp_suspend_cache_addition();
if ( $this->is_preview() && ! $was_cache_addition_suspended ) {
    wp_suspend_cache_addition( true );
}

This gets called right before WP_Widget_Recent_Posts::widget() and its purpose is to try as best as possible for back-compat to prevent widgets previewed in the Customizer from polluting the object cache prior to publishing the changes. In the case of the Recent Posts widget showing the featured image with each post, suspending the cache means that the postmeta for each post will potentially need to be queried and re-queried each time they are accessed in the customizer.

The workaround here to explicitly turn off the cache suspension when rendering your widget is to add the following to the beginning of your widget subclass’s widget method:

if ( $this->is_preview() && wp_suspend_cache_addition() ) {
    wp_suspend_cache_addition( false );
}

This will immediately undo the cache addition suspension that was just in the invoking WP_Widget::display_callback() method, and the number of queries should return to what you see on the frontend.