Now I'm sure of what's going on.
The problem is that the X, Y and Z angles in the QC code are a single transformation. To do it correctly, the model's vertices would have to be transformed twice: First by translating them around the rotation's angles, and then by translating their positions from a plane to another.
However, Quake doesn't support that. So, when you align the model to the plane, you lose its actual orientation's angles.
Maybe a way to hack around this is to use two entities for the corpses.
Don't set any model on the first entity, and set the model on the second entity instead.
Also, set the second entity to MOVETYPE_FOLLOW, and set the first entity as its owner.
Now you should be able to do the plane calculations on the second entity, the rotation calculations on the first entity, and the engine should do the transformations correctly... depending on how the MOVETYPE_FOLLOW extension was implemented.
Ph'nglui mglw'nafh mankrip Hell's end wgah'nagl fhtagn.