I think Stratum V2 is necessary, as this allows for the separation of "transaction data" and "header information". However, I haven't found a description of how miners identify transactions that are suitable for the otherwise empty block. Do miners only do this for their own "grandchild" blocks, i.e. two consecuitive blocks mined by the same pool?