I find I can prevent the commoners from going hostile by setting WITFRIB to zero in repadjust.2da.
This must be a bug. According to the documentation, WITFRIB is only supposed to apply to friendly witnesses, but the commoners start out as neutral. Changing WITNEUA (the response of neutral witnesses) has no effect, so perhaps that feature was never implemented.
Unfortunately, this fix leads to other problems, such as guards attacking but remaining neutral to the PC, and commoner conversation events seemingly broken.
So, reluctantly, I'll resort to the workaround of plot-flagging all commoners. Thank goodness for moneo!