How do I force WP_query to fetch fresh, non-cached results?

WP_Query has a Caching Parameters you can configure to return the desired data with/without caching.

$swp_args = array(
    // Show posts without adding post meta information to the cache.
    'update_post_meta_cache' => false,
    ...
);

In your specific case update_post_meta_cache allows you to turn on/off the caching for post meta.