I have seen disappearing blocks when for some reason you have more that block being allocated the same weight in a position on the page.
I have been unable to replicate the problem, either change the
database entries in mdl_block_instance so that they don't have the same weight or have a look at the blocks_get_by_page function in blocklib.php where the blocks get overwritten ( you could check if it is already set in the array $arr[$block->position][$block->weight] and then increment $block->weight if it is)
It may be that the block instance table needs a constraint so that 2 blocks can be allocated to the same position on the page?
I haven't notice if we still have the problem.
HTHCheers.
Rod