Yeah you are still gonna get dodgy results even though you are applying the same amount of force in the same place in the same direction there is no guarantee that the objects will act the same.
The whole idea behind using physics in a game is to make every experience different, otherwise you could just pre-animate everything.
The server handles all the dynamic objects physics route is the best way IMO, you just have to find a clever way of implementing it.
There isn't really that much more load on the CPU of the server, because the server knows where the other players are so if they crash into a box for instance then all the server has to do is send six floats (positionXYZ/rotationXYZ) and an integer or even a byte (id of the dynamic object moving), then when the clients get this they just apply the rotation/translation to the dynamic object with that id.
I know the voices aren't real, but they have good ideas!