First, you shouldn't need to call setToSetupPose. Changing the BoneData rotation is enough. Also, don't call findBone every frame, this does a strcmp for every bone.
When AnimationState crossfades, it applies the old animation (overwriting the pose for any keyed bones) then mixes the new animation. I believe what you want to do is apply the old animation, rotate the torso, then mix the new animation.
Since there is no way for you to run arbitrary code between the apply and mix inside AnimationState, you won't be able to use AnimationState to do what you want. AnimationState is only for convenience, you could track the times yourself and use the Animation API to do the crossfading.
Another option might be to modify the animation instead of manually adjusting the torso rotation.