Interesting. I think the problem is that, as you've noticed earlier, alignToVec doesn't completely align the axes in one go (this is due to rounding errors that get exacerbated with a larger angle between the two axes). Since on the other side of the planet the vector could be a little behind or a little in front of your vehicle (in object space), these little inaccuracies cause the vehicle to change its mind about which direction it should go.
Here are a few ideas:
First, we can confirm this by adding a few more alignToVec calls (like you did earlier) and see if that makes the problem less likely to occur (that is, it'll hopefully mean the destination needs to be much closer to the opposite pole for the problem to occur).
Secondly, if the vehicle adjusts its angle gradually rather than instantly (add a max_rotation parameter to the look_at function and make sure the function never rotates the vehicle more than the amount given in this parameter -- make it 5*time_step, for example, and the vehicle won't adjust its pan by more than 5 degrees per tick), its turning circle might let the vehicle get far enough away from its destination's pole that it can escape that "inaccurate zone" and continue to its destination.
Thirdly, if the vehicle only checks the angle to its destination once a second or so, it should be able to get far enough away from the pole after the first check that any checks after that will be fairly consistent.
Any one of these should help, I think. The first is fairly inefficient, but could be used to confirm whether or not that's the root of the problem. In the end, a combination of the second and third solutions might be ideal, but the first would be the quickest way to confirm what the actual problem is.