well you have all the tags covered except subsample.
Have you tried with a smaller dataset?
You mention that you removed small geometries... I would run a sample using selected samples from your remaining that have an area less than 200**2 units to see if the negative buffer is causing geometry errors rather than the complete disappearance of the geometry. (in short consider a circle negatively buffered with a radius of 100 m, in theory it should become a point and/or vanish)
You seem to have everything else covered, except trying to do this in pieces rather than process all at once. Sometimes the incremental approach, using subsamples, can have significantly less processing times than doing the whole.