Apologies for the minor necro, but I have some information to add to this thread which I figured might be useful...
I hit this same problem today while porting PneumaticCraft's air cannon to 1.12 - one of the air cannon's modes allows players to be launched into the air. Worked fine if I triggered the cannon via a button, but I got the "player moved wrongly!" message when triggering with a pressure plate. The reason for this is that the pressure plate's redstone signal (and the resulting actions) is directly triggered by entity movement, so EntityPlayerMP#setPositionAndUpdate() effectively ends up getting called from within Entity#move(). This is sufficient to trigger the server's move validation checks, since the player has moved further than expected.
I got around it with a bit of a gross hack: using reflection to set EntityMP's private invulnerableDimensionChange field to true right before calling setPositionAndUpdate() - the server validation code will be ignored if this field is true. This at least has the nice side effect of being automatically switched off pretty much straight away; as soon as the server receives a CPacketConfirmTeleport packet, which happens as soon as the client gets the SPacketPlayerPosLook packet.
It's not pretty, but it works.