As peter ferrie pointed out you have a relocation entry there
which can be inferred by the opcode and address const
BE E4732201 => mnem addr => mov esi, 012273e4
if the load address changed the 0122 (HIGH_LOW) part will change
according to the load address so your patch gets modified .
i statically rebased an image from its preferred ImageBase
There's an entry in the relocation table that is pointing to that location, so the value is being adjusted according to the load-address. To fix the problem, you'll have to find that entry and disable it. The simplest change is to make the entry empty so that it's skipped, as opposed to copying all following entries over this one and reducing the count.