How is a “reward” encoded in a block?
Both the block reward and the fees are collected via a "coinbase transaction", which is the first transaction in the block.  It has no inputs, and the total value of its outputs is allowed to equal the sum of the block reward plus all the fees from the block.  The miner can then set the outputs of this transaction to pay the total to their own address(es).

In particular, it is not necessary for the miner to explicitly list which fees are being collected from which transactions.  It's assumed that all fees from all transactions in the block can be collected, so this determines the allowable amount for the coinbase transaction.

The "after 100 blocks" rule is enforced by requiring that none of the next 100 blocks is allowed to contain a transaction which spends this block's coinbase transaction.  I guess it's a matter of semantics whether the reward "happens" with this block or 100 blocks later.