This is the code to play and freeze an animation on the starting position:
var trackEntry = skeletonAnimation.AnimationState.SetAnimation(0, yourAnimation, true);
trackEntry.TimeScale = 0f;
A Spine.TrackEntry
is an instanced object that lives in a track in AnimationState.
It keeps track of the animation time of an instance of playback.
So you can set its TimeScale its TrackTime, and other things relating to its playback.
Setting the SkeletonAnimation's or AnimationState's timeScale to 0 completely stops all time progression which means even transitions don't proceed, which isn't what you wanted as you discovered.
Setting the TrackEntry's TimeScale to 0 has some ambiguities that weren't resolved until the 3.7 update so you may run into some weird things in 3.6.