Okay, so I was a bit premature in giving myself kudos for getting a nice subsumption/arbitration thing going there. I've been refactoring the code a little while writing the rotating ranger code (ie servo+SRF as a single entity), and as it turns out, one of the conditional compiles wasn't #defined previously. Now that I have enabled it ... well subsumption has a little way to go.
That being said, though, I have to say that the architecture works as designed, it is just that my behaviours are too simple - they should be state machines, not simple conditional outputs. It does raise the question though, once the behaviours are FSMs, what will happen once a higher-priority tasks interrupts a lower priority one, since not all behaviours are mutually exclusive.