Yes, I had noticed pressure advance and it did help a little bit, to the extent that I was able to find an optimumal setting. But it did not solve the problem.
Here's what happened. I guesstimated speed and acceleration limits from major resonance modes, and they turned out to be pretty good estimates, but I forgot that the g-code commands for setting those values expected per-minute velocities. The result was mesmerizing. I just sat there and admired the smoothness of motion. I took it as a sign of Duet's intelligence and forgot to check whether the character of the movements I observed had anything to do with the values I had entered. Best of all, I thought, was that none of the motion was transferring to the walls of my apartment. Surprisingly, that newfound smoothness didn't really affect the overall print time too much, so I didn't realize what I got wrong until much later.
Today I found and corrected the error, and now the machine shakes like crazy again, but it produces passable prints. Not bad for a second try. The strokes are still thinner in the middle than near the ends and there is a small ridge on the top surface where the infill meets the perimeter. Traces of ringing are visible on the sides but are not really palpable (way under 0.01mm) – which is an excellent result for a frame that is not famous for its rigidity and a print head whose total weight is approaching 1 kg.
Thank you for thinking with me. I wouldn't be making as much progress without your help.