You shouldn't need to modify the runtime. Relevant docs are here:
AnimationState setEmptyAnimation
And also here:
Applying Animations - Spine Runtimes Guide: Empty animations
You mentioned you found this second link, maybe you hadn't seen the first.
Code might look like:
AnimationState state;
// "walk" animation on track 0.
state.setAnimation(0, "walk", true);
// Empty animation on track 1, so we have something to mix from.
state.setEmptyAnimation(1, 0);
// The 0 in the line above is mix duration, useful when mixing out, eg from an animation to nothing.
// We don't need that though, as we are mixing in.
// Mix from empty to "cast spell".
TrackEntry entry = state.addAnimation(1, "cast spell", true, 0);
// Set how long it takes to mix from empty to "cast spell".
entry.mixDuration = 0.25f;