I could never figure out how to use addVelocity correctly, instead I always just used setVelocity for sending people skywards. Does addVelocity only work if people are already moving?
As for the crouch humping, I'm pretty sure I had to learn that technique when I was playing Badspot in L's blockland researcho.
addvelocity simply adds the velocity you put into the vector to your current velocity. which means if you're going in the opposite direction of the thing, it'll not force a direction change, simply reduce your current velocity by that amount. if you have no velocity it works exactly the same as setvelocity.
internally both work exactly the same: setvelocity just sets your velocity while addvelocity adds your current velocity to the vector, then sets your velocity to the sum.
setvelocity just "appears" to have more effect as its a forced change and thus is extremely consistent