If a custom block returns true for IsBlockReplaceable(), it can never be replaced by vanilla blocks. The placed block, instead of replacing the custom block, is placed above or to the side of the block that is supposed to be replaceable, resulting in this.
The problem is in ItemBlock (it is not aware of the isBlockReplaceable hook)
I have posted a fix as Forge pull request #89 for both client and server.