Hmmm... This is an interesting problem, and I'm figuring this out as I go, so I could be wrong here, but in general I think you need to maintain 3 angular velocity variables. These will contain the current rotation speed for each of the 3 dimensions. Now, having said that, I think that in landing, you will only need to tweek two of them.
Also, I think that for each of these variables, a positive value means rotation one way, and a negative value means rotation the other.
In you're image, A is going to hit the ground first. Common sense tells me that after A hits, the object will begin rotating TOWARDS B and also towards D.
So, you need to ADD a scalar to the angular velocity variable that controls A->B rotation, and add a scalar to the angular velocity variable that controls A->D rotation.
How do you get the value of these scalars? Hmm, well, once again common sense tells me that it depends how far A, B, C, & D are from the center of mass of the object, but only in one dimension. I don't think I can explain in words what I'm talking about here... But the above should be enough to get you started....
Also, when the helicoptor hits the ground, their should be some sort of rebound, so you should add some UPWARD vector to the direction vector of the coptor... This will make the coptor bounce a little, and will look cool with the above rotations....
Tony