users.onSaveUser firing multiple times
This burned me awhile back. As I understand it, your code is not just running 44 times, it's actually running an endless loop... until it blows up (and likely runs out of memory).

Basically when you attach onto onSaveUser and then save again using SaveUser, Craft is going to give other plugins—that also latch onto the onSaveUserevent—a shot at manipulating the data you just saved. 

So the wrinkle there is Craft is going to call your code again, resulting in the endless loop. Basically you need a way to break the loop.

Brad mentions  one way around that is to simply update the db directly instead of calling saveUser. Since you're using a custom field, that's a bit harder to do.

Another would be to define a static variable and only allow your code to call saveUser once.

public function init()
{
    craft()-&gt;on('users.onSaveUser', function (Event $event)
    {
        $user = $event-&gt;params['user'];


        if ($user-&gt;talentJobFamily-&gt;value != '') {
            $user-&gt;getContent()-&gt;setAttributes([
                'talentStage' =&gt; 'engage',
            ]);

            static $recursionLevel = 0; // is set only once

            if ($recursionLevel == 0) 
            {
                $recursionLevel++; // saveUser only gets called once
                craft()-&gt;users-&gt;saveUser($user);
            }
        }
    });
}


That's also documented in my original question.