Unexpected number of loops in while

This is because have_posts() is for the main loop, and not your custom query. Prefixing each use of have_posts() and the_post() with $WatchListQuery-> will fix it:

if ( $WatchListQuery->have_posts() ) {
while ( $WatchListQuery->have_posts() :
    $WatchListQuery->the_post();