The only reason get_the_terms should be returning more than one is if more than one is selected for that post. From the doc.
get_the_terms( int|WP_Post $post, string $taxonomy )
should only get the terms selected for the post in the specified taxonomy