Not long after posing this question I figured it out. But since I had spent a few hours looking for the awswer I thought maybe it would be worth posting. I hope this does not break any rules. I changed the default priority tofrom 10 to 11. as per:
add_action( 'profile_update', 'initiate_participant_profile_update', 10, 2 );
changed to
add_action( 'profile_update', 'initiate_participant_profile_update', 11, 2 );
So I guess the new function now waits for the user update to finish be fore running.