So you've double-checked you're requesting position as a 64 bit value and handling it everywhere as 64 bit? The definition of the data structure you want from FSX should also be FLOAT64's and look something like (C++):
hr = SimConnect_AddToDataDefinition(hSimConnect, POS_MSL_STRUCT_ID, "plane latitude", "degrees", SIMCONNECT_DATATYPE_FLOAT64);
If that's right, how are you interpolating exactly? I get perfectly smooth movement first converting lat/lon/altitude to orthogonal XYZ (the math is easier that way -- I use a simple spherical earth model and it works fine, and of course use the same units for position, velocity and acceleration e.g. meters and seconds), then you can use classical equations of motion and simple integration to calculate velocity and position.
So for example when you want to get the position "now," you have time T (time now) and time TL (time of last update) and first calculate delta time dT = T - TL
Then calculate the velocity "now" as V = VL + 0.5 * AL * dT^2 (where VL is the velocity at last update, AL the acceleration at last update).
Then calculate position "now" as P = PL + V * dT + E * Max(0.0, 1.0 - dT) (where PL is position at last update and E the error amount, see below).
The bold above are all vectors. Then you'd convert the X/Y/Z position vector back to Lat/Lon/Altitude.
When you get a position update, to prevent warping you can calculate the error amount E as the difference between the interpolated position as of the new update time, and the actual updated position at that time. In Max(0.0, 1.0 - dT) above, this will reduce the error to 0 over 1.0 seconds which I've found isn't noticeable as long as you're doing 1Hz+ updates and aren't doing tight turns on the ground. It lags behind turns and will be affected by higher update rates, so you can play with that 1.0 value until it looks right (smaller for higher Hz or to keep up better in tight turns). So:
1. Receive updated position PU
2. First get extrapolated position for "now" (PE) through the above
3. Calculate E = PE - PU
4. Now set the new "E/PL/VL/AL/TL" values
I didn't include the lag correction / clock "sync" I described above though, which may not be needed unless you're getting large variations in ping times with the other side.
Then you do the same for orientation using angular velocities and accelerations but it's the same concept as above (although it gets tricky going through +/- 90 degrees pitch).
Also be careful of update rates that are too high, because at slow speeds (like while parking) you can get underflow (no change to lat/lon when the change in position at an update is really small due to both small velocity and small delta time), meaning the object won't move.
Is this at all similar to what you're doing, or do you want me to elaborate? I don't really know any simpler interpolation that still keeps movement smooth. (You may also need to cheat with heavy braking on landing or taxi because the above assumes constant acceleration when really there are changes in acceleration rate which may cause jerky sliding on the client side. Maybe use a bigger error correction time if the brakes or reverse thrust is on).