It's totally possible. In Spine C#, I subclassed TrackEntry to allow a simple weighted blend between two animations in the mixing phase:
public class BlendTreeTrackEntry : TrackEntry {
internal Animation endAnimation;
internal float weight;
public float Weight { get { return weight; } set { weight = value; } }
public override void MixAnimation(Skeleton skeleton, float lastTime, float time, bool loop, ExposedList<Spine.Event> events, float alpha)
{
// Mix both animations, depending on the weight.
Animation.Mix(skeleton, lastTime, time, loop, events, alpha * (1 - weight));
endAnimation.Mix(skeleton, lastTime, time, loop, events, alpha * (weight));
}
}
There's a few other bits that make this work in AnimationState, but the general idea is that you mix in both animations at the same time depending on weight. It works pretty well, although I think a true multi-animation and multi-dimensional blend tree is a good feature for the runtimes to support on their own.
I should add that you could also do something like this by controlling the weight of animations in different tracks, but I like to use different track indices for functionally different things (animation layer style).