It seems redeploying a contract using bytecode on the blockchain is not possible (even assuming the ABI is known). The reason for this assumption is that the compiled code includes instructions for initialization including any constructor actions, however, the return data on contract initialization written to the block does not include constructor instructions. If it is possible to reconstruct and redeploy with information already extant on the chain, I would love to see how this is possible.
[In a side note: recent versions of the compiler provide "runtime bytecode" which allows one to check the validity of source code. This code should match contract code deployed to the block.]