Das mit dem langsamer werden hat einen ganz einfachen Grund.
Deine aktuellen Bedingungen/Formeln(vereinfacht):
vCamRot.Z = 1.0f
bzw
vCamRot.Z = -1.0f
CamTarget = CamTarget + vCamRot * fTime
Betrachten wir den 1. Fall(also z = 1). Wenn wir die Taste ganz lange drücken läuft das auf Z -> unendlich hinaus. Da wir vCamRot nur einfach zu dem Ziel addieren bedeutet das nur, dass bei unserem CamTarget Z -> unendlich läuft. Für z = -1 gilt das ganze ebenfalls, nur mit anderem Vorzeichen. Du hast also keine Rotation sondern nur eine Translation.
was du brauchst ist irgendwas in dieser Form:
CamTarget = CamPos + Vektor(sin(CamRot.Z), cos(CamRot.Z), 0)
Du nimmst also die CamPos als Ausgangsort und addierst zu dem nur ein Richtungsvektor. Dieser muss einerseits die X als auch die Y Komponente verändern um eine Rotation um die Z Achse zu erreichen. Ob das nun so wirklich korrekt ist, weiß ich nicht, aber von der Theorie her sollte es stimmen.