I'm not sure, if I missed something, but why isn't block size limit defined dynamically based on previous usage (plus some safety margin)?
Powerful entities would game the system, turning it into a proof-of-bandwidth system, which would be a bad thing.