Unlimiturd: you may have any block size you want, so long as it's <16MB.
Am I wrong about ^this^? If so, please advise on the actual maximum value.
Yeah, you're wrong. You're referring to src/unlimited.h:
DEFAULT_EXCESSIVE_BLOCK_SIZE = 16000000
It's a default value of a setting that can be changed in Unlimited. As in: not a permanent feature.
The actual hard limit is in src/consensus/consensus.h:
static const unsigned int BU_MAX_BLOCK_SIZE = 32000000; // BU: this constant is deprecated but is still used in a few areas such as allocation of memory. Removing it is a tradeoff between being perfect and changing more code. TODO: remove this entirely
Note: this means it is 32MB - currently, subject to future removal.
Not 16 as you've now confidently twice claimed.
That's all.