A lot of this maths has gone over my head, so I havent read everything CAREFULLY,
so please forgive me if Ive missed something somewhere...
One thing does spring to mind is that the 'alignToVec' functions DOES use the
angle already contained in 'entAng' as a start point.
So, when you are using this function to calculate your directions, could it be
that it is being adversly affected by the fact that the entity has been rotated
slightly to match the 'lumpy' surface angles?