Erst bestimmst du die Sollorientierung:
turret_orient += (key_e-key_q)*5*time_step;
turret_orient %= 360;
Nun gleichst du den Wert langsam mit der nützlichen Funktion ang() sowie clamp() an:
turret_offset += clamp(ang(turret_orient-turret_offset),-0.5*time_step,0.5*time_step);
Ich habe dabei 5 bzw. 0.5 als Faktoren gewählt, da du time_step in deinem Code nicht benutztest/ vergessen hast und die Drehung dadurch bestimmt schneller als bei den Werten gedacht ablief (/ es durch *time_step langsamer, aber Frameraten-unabhängig wird).