So I've been going through as much stuff on behaviour trees that I can find to try and figure out whether they're going to be appropriate for what I'm doing and how they actually work. "Behavior Trees for Next-Gen Game AI" is very comprehensive and well worth a watch if you're interested (despite my dislike for videos - text is just so much more practical), and I think I can see how it would come together to produce interesting behaviour.
In a way I'm actually feeling a little disappointed - the current game design doesn't call for massivly complex AI (you are fighting zombies after all) but now i have the urge to switch to something with fewer enemies with a much richer set of behaviours. But that will have to wait, and the current game will give me a chance to walk before I run anyway.
I'm not entirely sure how i'm going to handle interrupted states and animation (like when an enemy gets hit right in the middle of an attack). Currently I'm thinking of having behaviours listen to events, and making them fail and bail out if they take damage. It seems like it would work, but it sounds like it would require handling this event all over the tree, which could get tedious and error prone. On the other hand it might be a good way of intelligently playing different damaged/death animations depending on what we were doing at the time.