Recon: When copy_bytes is passed 0 as the second parameter it will return a count of how many bytes need to be copied.
The third parameter (6) is how many bytes of space we are going to be overwriting, and copy_bytes will find the next instruction boundary at or beyond 6, so that we only copy whole instructions. (Leaving half an instruction at the source wouldn't be pretty).
You are absolutely correct with the fixing jump/call code!
Keeper: Yes, he's using the 6 byte version of jump.