Wouldn’t it be more beneficial to reward them based on efficiency as it relates to computational power / energy consumption?
You cannot do that, because you only know produced hashes, you don't know if it was CPU-mined, GPU-mined, FPGA-mined or ASIC-mined, and how efficient that device was. You can only reward miners proportionally to the produced hashes, according to network difficulty and coinbase reward. It is possible to pay miners based on their efficiency in decentralized way, but more things are needed to check if produced blocks are valid.
Sort or hash/watt
No, because "watt" can be only estimated. It should rather be "satoshis per hash". I thought about creating a chain on Layer Zero, where Bitcoin would be Layer One (and LN/sidechains would be Layer Two). Then, that Layer Zero could contain superblock headers, where the merkle root would be created in the same way as in normal blocks, but transactions would be replaced by block headers. Then, block hashes would be concatenated and hashed, forming a merkle tree. Then, that superblock header could store many block headers and could be attached as a commitment to the coinbase transaction on Layer One, just by using unspendable "OP_RETURN <superblockHeader>" TapScript branch and tweaking the miner's key, then the cost would be zero additional bytes on-chain. In this way, Layer Zero would be merge-mined with Layer One.
By checking only 80-byte headers, it is enough to distribute "satoshis per hash". But, to have a working system, checking more things than block headers alone is needed. It could be a good starting point, but that should be restricted by more rules, to make sure that produced blocks are valid enough to give each miner its share.