I think it has to do with them being in the exact same position. The best you could probably do is add the destination distance amount to their current coordinates. But teleporting is somewhat random when it uses .5 or whole numbers. It could be seamless, but possibly not all the time.
From the wiki: "Can also relatively move the player by adding the ~ character before the coordinate value. For example typing /tp John ~3 64 ~3 will teleport a player called John 3 blocks away from his current x and z, and to y 64."