To help illustrate my problem, I have uploaded a video demonstrating the issue alongside this post:
I first create a path, following which I set two of its odd vertices to an empty handler (select verts,
control-h). Thus, when I rotate the empty, the vertices move also.
The last bone in the armature has a SplineIK modifier applied to it, so it deforms depending on the shape of the path.
I first animate the empty, which causes the path to deform, which in turn causes the armature to animate as I would like it to. However, the animation itself is currently defined in terms of the rotation of the empty, which is confusing; I'd rather have the animation be in terms of armature keyframes (as per usual).
So, I go back through the animation, and insert keyframes of the bones at each point that there is a keyframe of the empty. However, Blender does not seem to think that the bones have moved at all, despite clearly being manipulated by the current empty.
I also noted that when I mute the empty channel in the Dope Sheet editor, the animation gets 'stuck' on whatever frame was current just before the channel was muted. When I un-mute the channel and seek with the cursor, the animation becomes 'un-stuck', and remembers what form it should assume.
What I'm ultimately trying to do, is to initially animate the swimming animation using the path, only to then insert the bone keyframes and delete the path and all helper objects.