Can UObjects be replicated?

I’d also suggest to go with the AActor. AActors are linked to the world and have nice lifecycle methods you can use to handle certain events. See BeginPlay, EndPlay etc.

Also there is a good way to implement the states of a state machine with the “Within” class specifier (see here). You can find an example for that within the Unreal Tournament Project. Just look at the WeaponStates (e.g. UTWeaponStateFiring, UTWeaponStateActive, etc.).