If you don't need advanced collisions response, you can use a vector moving one unit out along the units LOCAL z axis as it's thrust vector. Now you simple add a percentage of this vector to it's global motion vector, and it will be free to rotate any direction without immediately moving in that direction(if you only apply the thrust vector when it "thrusts"). If you apply it all the time, but at 70% strength or something.. then it will slide arround corners.
Any code/examples to show this? I'm with ya in theory, but Im just a little unsure of how to apply the percentage to the local Z-vector. Surely this should involve some trig? Remembering that local 'Z' could be globally ANYWHERE in 3D.