Ok, so it turns out that this was caused by a problem in my stepper motor drivers, which results in missed steps, as described on this guy's blog
The fix was to hook up these "TL Smoother" modules (I got these particular ones from amazon but there are a bazillion clones)
After hooking up TL Smoother, this is what the print looks like:
![enter image description here](