This is an alternative to #8364, and should fix #8079 without reintroducing the high-sigop attack fixed by #7081.
When a transaction’s sigops * bytespersigop exceeds its size size, use that value as its size instead (for fee purposes and mempool sorting). This means that high-sigop transactions are no longer prevented, but they need to pay a fee corresponding to the maximally-used resource.
All currently acceptable transactions should remain acceptable and there should be no effect on their fee/sorting/prioritization.