Oh boy. This is expected.
In this case, it would solve it if you do this:
Replace:
_spineSkeleton.SetSlotsToSetupPose();
_spineAnimationState.Apply(_spineSkeleton);
with
_spineSkeleton.SetSlotsToSetupPose();
_spineAnimationState.Event -= YourHandlerMethod;
_spineAnimationState.Apply(_spineSkeleton);
_spineAnimationState.Event += YourHandlerMethod;
The other option is to queue the skin change method to be called the next Unity update frame instead of having it as a direct callback.
The problem was that _spineAnimationState.Apply causes all captured events that frame to trigger. So if you call that as a response to the callback, you'll get infinite recursion (and of course, Unity freezes until the eventual stack overflow.)
There are other solutions to this problem too if this doesn't quite work for you. The above will still call any other events captured that frame more than once, as it would have anyway even if your skin change wasn't in the callback.