For rotation what you'd ideally do is (1) load an identity matrix onto the brush model, transform it as normal, then (2) multiply the resulting matrix from 1 by the current MVP for drawing the entity, and (3) inverse the resulting matrix from 1 for lighting. (4) multiply the light position by the inverse matrix to get it's transformed position then proceed as before.
That works perfectly with a hardware accelerated engine, but for software you'll obviously need to do a little more work.
e3m3 also has rotation set in it's worldspawn.