I'm living in an area where modems still are common. We got DSL last year - with reduced speed

I've done your way with server updates (I think I did it a bit differently, but the basic idea is the same) and it works great for a low latency system.
The problem I encountered with ltency was, that the data send by the server was 100ms-300ms old when it arrives at the client. So this gives a noticeable jerk and all my methods to reduce this jerk failed. I tried to calculate the position when taking latency into account, so I have a fitting old position on the client to vccompare it with the one sent by the server - it simply was not accurate enough. The result was a bouncing player - very ugly and unplayable.

This was not acceptable.
With my current way I'll have an open door for cheaters, and about the collision you're right as well.
But we're lucky that A7 does colission for us even on the client, so the client doesn't notice that the server lags behind. For issues like falling of from a platform on one of both I do a regularly distance check - I only allow a certain distance, if it is to high I assume the system is out of sync and I force an immediate update. No smooting or anythign else. A fixed position update.

But this is ok. As player you only see the others lagging, which is way better than seeing the control taken away from your own player model.

I'll see if everything works with events and the like as my test project progresses. But for now I'm happy with the results and the setup for more entities is really easy.