If the engine block has 12 volts on it that means it isn’t grounded properly. You also stated that the main ground wire has 12 volts on it. I assume you are using the battery post as your ground reference for whatever tester you are using. If that is correct then it means something is wrong with main ground connection at the battery. Possibly there is corrosion inside the wire or at the battery post clamp causing the issue. You may need to replace the main ground cable.
This kind of thing would be the same as removing the ground lead at the battery. With no ground to anything and only the positive wire connected, all the grounds would have battery voltage on them, using the negative post as your reference source. There is no return, current cannot flow since there is no return side of the circuit, so you see the full battery voltage on the grounds until a return to the battery for the ground connection is connected up. Ohm’s Law stuff.