Yoast SEO Calling content filters 2 additional times

The core of your problem is that the_content is a filter not an action, and it is supposed to return values, not echo them.

As for the “called number of times” part of the question, yes any hook can be called unlimited number of time. If you find that you need to return one result on the first call and different on the others it is a sign that you are doing something wrong or extremely hacky.