Rebuilding the hubs with 38 new balls and too much grease
The hubs were the part I had been putting off, because cup-and-cone bearings have a reputation for being fussy to adjust and I had never done one. In the end both hubs took a single Saturday, and the fussy part is real but manageable if you accept that you will adjust each one three or four times before it is right.
Disassembly was simple: 13 mm and 15 mm cone wrenches on the front, 15 mm and 17 mm on the rear, and the locknuts came off with a sharp tap rather than a steady pull. Inside, the grease had turned to something like dried toothpaste, grayish and cracked. The front hub had ten balls per side at 3/16 inch; the rear had nine per side at 1/4 inch. Every one of the 38 old balls had at least one dull spot under a loupe, so they all went in the scrap tin. The cones had faint wear tracks but no pitting, which was lucky, and the cups were clean once the old grease was scraped out with a wooden skewer.
Reassembly is where I made the obvious mistake. I packed each cup with grease until it was full, pressed the new balls in, and then spent twenty minutes wondering why the axle felt stiff and lumpy even with the cones backed right off. The answer was that there was so much grease that it was pushing against the balls like a hydraulic lock. I pulled it apart, scraped half of it back out so the balls sat in a bed with their tops just showing, and it spun freely immediately.
Adjustment went like this, four times on each hub: tighten the cone finger-tight against the balls, back it off about an eighth of a turn, hold it with the cone wrench while tightening the locknut against it. Then grip the axle ends and rock. There should be the faintest trace of play with the wheel out of the frame, because clamping the quick-release compresses the axle slightly and takes that play up. The first three attempts on the rear were either gritty, meaning too tight, or clicking, meaning too loose. The fourth was right. Spinning the wheel in the frame afterwards, it ran for just over two minutes from a single push before stopping, which is twice what it managed before.