How do I listen to an event on an object that hasn't been created yet?

You should make the action event driven.

Perhaps add a new actor component called status onto your base character that can hold status effects such as isFrozen.
A better way would to have an array of status effects
example

 TArray<FStatusEffect> statusEffects;

Once you fire the weapon at the enemy if it’s a freeze ray => create a new FStatusEffect where you have a duration, and start time in the struct.
Add it to the statusEffects.

sync the statusEffects in the blackboad and use it in the service.

Iterate over the statusEffects comparing elapsed time to duration to see if the effect has warn off.

Then you can have

FStatusEffect like frozen, onFire, stunned, asleep, unconscious, poisoned etc