I believe the best solution is the one originally suggested by Theymos: as a full
node operator, examine the capacity of your hardware and advertise your block
size preferences in transactions you make. Gather data about what preferences
other have. Upgrade your hardware or update your preferences, and in the
end the block size will converge on a Schelling point based on signalling.
Or in short mining software needs more updates and features, but not too many to not worsen performance.
But some features could improve performance as well. If you could specifically optimize mining to your hardware, then it would be fantastic, and the software designed that way.