For the time being, I think I've more or less circumvented the issue, but I haven't tested yet to see what additional problems my solution may have created. I've added this just after foreach ( (array) $authors as $author ):
if($users_already_called[$author->user_login] || $author_as_user = get_userdata( $author->ID)) continue;
$users_already_called[$author->user_login] = $author->user_login;
That way, no user is mentioned twice. The second condition in my if statement excludes WP users who aren't mapped to a Guest Author, because in my case, I don't want any non-Guest Author users in this list.