Lag is unavoidable. I think the reason you may see it locally is that the framework will run at similar update speeds when operating across a LAN or on the internet.
I am not sure what other suggestions might help you, but I can relate a similar issue I faced when there was too much lag while firing a projectile.
I found that sending a message to the server to "fire" instead of relying on input bits works out a bit faster. I am not sure if that will hold up on the internet, but at least locally it does. On client I send "fire" message, on server I use on "fire" event, find the player with the Multiplayer.FromId, and fire from that players location (additionally I do some validation that the player is able to actually fire at that time).