Based on the first suggestion of @musicamante, I tried repainting everything. At the beginning of the painting code, I request a full repaint on hover:
if option.state & QtWidgets.QStyle.State_MouseOver:
ind = QtCore.QModelIndex()
self.model.dataChanged.emit(ind, ind)
This seems to suppress the flicker on mouse over. The plots stay in the over-painted state. This is sufficiently close to what I was going for.