Also, keep in mind that just because the movement is nice and smooth doesn't mean the players are in the right place - with that build you presumably need to lead your shots by your latency, which you don't with d3 base. There will be other negative effects too, such as the local player view not being as correct wrt the server view.
The d3 method works pretty well for pings up to ~100, and these days, do you really need to play on 400?
There is a good reason why the majority of fps games use interpolation instead of Forward Prediction. Forward Prediction actually attempts to do the impossible by trying to predict on a game client what the server's gameworld looks like at the very moment. But since every game client (even the ones in a LAN environment at 0ms Latency) always runs with a certain delay behind the server, there are always going to happen prediction errors, which then, when the confirmed snapshots from the server finally arrive, have to be corrected. We are experiencing these corrections as "snapping". And I am witnessing that kind of snapping even at the LAN environment where actually the latency is very low.
A 100ms server radius, like you define as pretty fine, (which in fact it isn't, as there is already a lot of snapping happening for all the game entities and also a lot of skipping for the particle & projectile effects spawning) actually narrows down the server's client pool quite heavily, compared to a game server that can offer acceptable gameplay for clients with a ping of up to 400ms, like visually illustrated in the below images for a server located in London.
Server Client Coverage at 100ms
Server Client Coverage at 400ms
And finally I would like to add that I rather prefer to lead my aiming (or have the shooting be current and then later backwards calculated like in CSS with "unlagged") than shooting at a jerking-snapping-teleporting target where I barely can make up where it actually is located like showcased in this youtube movie
. After all there is a reason why multiplayer-only game developer Splash Damage introduced interpolation networkcode with Brink to idtech4.