you can get a player's forward vector using %player.getEyeVector();
I would suggest using that over %player.getForwardVector(), as that returns a 2D direction instead of a 3D one.
Alternatively, there is also %player.getMuzzleVector(0), which ignores when a player holds z to go into free look mode.
As far as using them with setVelocity, I believe the best implementation is
%player = <player object>;
%impulseamount = <some number>;
%player.setVelocity(VectorSub(%player.getVelocity(), VectorNormalize(%player.getMuzzleVector(0), %impulseAmount)));
This will take the player's current velocity into account, and cause them to accelerate backwards as opposed to losing all current momentum and suddenly going straight backwards.