I've found that view punch works really well with rotating the player because of its instant effect and smoothing towards the actual player view.
Applying it in the other direction, on the same frame, produces smooth turning effect with a little bit of wobbling at the end if the angle is wide enough. This only works in first person, other players just see the client spazzing about.
PHP Code:
stock void RotateClientSmooth(int client, float fAngle){
float fPunch[3], fEyeAng[3];
GetClientEyeAngles(client, fEyeAng);
fEyeAng[1] -= fAngle;
fPunch[1] += fAngle;
TeleportEntity(client, NULL_VECTOR, fEyeAng, NULL_VECTOR);
SetEntPropVector(client, Prop_Send, "m_vecPunchAngle", fPunch);
}
PHP Code:
RotateClientSmooth(client, 30.0); // turns client 30 degrees to right
I don't know if
m_vecPunchAngle is available for mods other than TF2.