One thing I haven't tried for longer animations, yet, is to do a base loop for the thrusting as one action, then animate more varied movement, like moaning or looking around, separately as another action, then using Blender's NLA editor to layer them on top of each other. I'm assuming that's how most animators handle that.
Does SFM have something like the NLA editor? It's been years since I tried using SFM, so I don't remember.