I have been trying to make an automated dwarf-washer, have gone through several major design revisions lately. Haven't yet really succeeded, but I have learned a few things.
Pools/smears/splatters of blood act like objects in DF2010. Flowing water will push a contaminant object along, just like it will any other object. Contaminates can be pushed through fortifications or wall grates by flowing water, but will not fall through floor grates, so if you have a shower room that drains into a floor grate the blood will tend to pool on the grate and not fall through.
Blood which is being pushed along by flowing water adjacent to a wall will sometimes randomly move sideways into the wall. Blood splatters in/on a wall tile will not be removed by water or even magma, but also will not re-contaminate dwarves or other creatures, so blood which has been pushed into a wall is effectively destroyed.
Dwarves or other creatures who step in water of any depth will loose all contaminates they carry, creating a pool of blood or whatever. Dwarves who step in a pool of blood will pick up that pool and then track blood for several tiles afterwards. This appears to be how pools of blood spread. It may be that this happens more often if the dwarf in question is already wearing a coating of water.
It is not hard to make a washing chamber that dumps water on your dwarves, then carries the resulting pools of blood sideways into walls or onto a floor grate off to the side out of the main traffic. The problem I am having is that while the washing chamber is self-cleaning, dwarves sometimes track blood out of the entrance, creating a pool of blood around the entrance to the washing chamber that then re-contaminates every wet dwarf coming out of the shower. Placing grates on the floor does not prevent this.
I have also discovered that a burning object will destroy blood not only in the tile it is, but also in all adjacent tiles. I haven't yet worked out a way to use this to clean the washing station that doesn't also set dwarves on fire.