In my experience, being a programmer, I stopped saying “quickly” and “reliably” together like that 
Understanding that part of the code took a longer time for me, and this is highly critical code that really needs to work, as it affects nearly all klipper users.
This was on my roadmap while building `PWM_Tool`, but that being a hobby, and it working for my small setup, I did not come to it.
I did manage to have more frequent updates with my low-end AtMega board and a OrangePi Zero (first gen), so I am positive that much more frequent updates are doable given enough bandwidth. At the end, this will need to be tested and tried. With the current PWM_Tool, I was able to do raster engraving with a resolution of about 5 pixels per mm, with a speed of around 30mm/s.
In the limit, every Step-Sequence sent to the Microcontroller could be accompanied by a separate PWM update, which would be as linear as we could get.
My draft Idea from back then was to modify the toolhead.move() / process_moves() / move queue.
The move queue after being cut down in the trapezoidal components contains the crutial acceleration / deceleration and “cruise” information. There, only during acceleration or deceleration the high number of updates is needed.
So I think my first experiment would add a list of “synchronous” PWM pins / Tools to the `Toolhead` class that convert the ramping times into separate PWM updates (move-like. It also uses the Stepcompress-Queue.)
For a more clean code, the trapezoid-generation of the PWM values should probably go into a separate “kinematic” class, in the klippy/kinematics/ folder.
I would really like trying this out, but sadly I am really busy for the forseeable future.
However, I still like to help with Code Reviews or sharing thoughts.
On another note: Some Laser engraving programs can cut the moves themselves and emit some estimated trapezoidal moves based on pre-defined accelerations. This is dirty, but might do the trick for some of your workloads.