You have a couple of options here,
1) offset all your fixtures so that the center of mass is at the center of the body. you will now have body.LocalCenter = [0,0] and body.WorldCenter = body.Position. This will throw off other code like drawing, etc.
2) Update both body.Rotation and body.Position in respect of body.WorldCenter. You need to rotate body.Position from the point of referent of body.WorldCenter.
I think you need to do something like that,
var rotDiff = targetRot - body.Rotation;
var posFromCenter = body.WorldCenter - body.Position;
var newPosFromCenter = Complex.Multiply(posFromCenter, Complex.FromAngle(rotDiff));
body.Position = body.WorldCenter - newPosFromCenter;
body.Rotation = body.Rotation + rotDiff;
3) Remove FixedRotation and use one of ApplyAngularForce(),ApplyTorque(), use a MotorJoint or a custom Joint to correct the rotation on each step. Or use the code from 2) but set body velocities instead. This might cause your sprite to occasionally oscillate around targetRotation when colliding with other objects. Increasing the mass or inertia to reduce the influence of other bodies. Keep in mind that if you explicitly set rotation/position (aka "Transporting") the engine doesn't know which way to resolve collisions and can cause overshoot or unexpected behavior.