Thank you Tuomo, you helped solve my issue! I think I will share in detail what I did in case it is helpful to others experiencing the same problem.
Since BP_PlayerPawn is being referenced by a number of different blueprints, I decided to create an interface that could be implemented by all the relevant blueprints containing the function On Player Respawn. There I added an input for a BP_PlayerPawn Object.
In the Class Settings of all the relevant blueprints I made sure to add the interface in the Details panel. Each of these blueprints have a BP_PlayerPawn reference created on the Event Begin Play, so I was able to attach a setter for the Event On Player Respawn function.
My BP_GameMode has a Get all Actors with Interface node referencing BI_PlayerRespawn and the resulting array gets put through a For Each Loop which calls the On Player Respawn function.
Just some questions regarding the Is Valid checks. Is it advised to do it every single time the reference is used? For instance, for BP_GameMode I put one within the body of the For Each Loop, but I could have done it prior to the loop so it is only done once.
Also, since I am doing a cast to BP_PlayerPawn earlier in that same thread of execution and setting the result, is it necessary to check validation if the cast did not fail? If the cast did fail for whatever reason, it wouldn’t even get to the validation check anyway.
Is it possible that something unforeseen could happen to the reference between the cast and the validation check?