Persist the NBTPersist fields in the complete class hierarchy.
Implement Blood Stained Blocks as Tile Entities.
This allows for (almost) all blocks being stainable.
It also allows to accumulate blood in blocks instead of having just one
predetermined fluid amount.
Blocks can also be stained with the Creative Blood Drop and stains can
be removed by simply breaking the block, which will remove all the
blood.