I'm not sure where to begin with this one...
Your update function adjusts a pair of values, moving one of them by a fixed amount every frame, but only on the player that owns the object. Predictably, other players will not see any real-time movement.
Your PeriodicSync function is executed on all players, meaning they ALL send packets that adjust StartPos and EndPos -- effectively overwriting each other's values all the time.
Each of your players is sending 100 updates per second, completely flooding the network.
Basically everything you're doing there is completely wrong. You are supposed to sending packets only on the player that owns the object. The packets are supposed to be sent infrequently, and only when something changes. If you send more than 10 packets per frame, you are doing something wrong. Each client is supposed to perform local per-frame movement based on the sync'd values. So your update function that only does per-player update shouldn't be checking "tno.isMine" at all.
In short, the bug, or in this case many bugs are in your own code. You need to think through what you're doing.