I've never messed around with Unity, but I would store the world rotation matrix separately and postmultiply the rotation component matrix onto the world rotation matrix before drawing (Rot * World = MV). If I need to rotate in the world coordinate frame, I could premultiply the rotation matrix with the new matrix ([Rot * NewWorld] * World = MV). If I need to multiply in the local frame, I would postmultiply ([NewLocal * Rot] * World = MV).
Hope that helps spark discussion.