My original idea is this:
The blocks that people find do not have any relation to their private key.
This means that if you are mining on a pool and you find a block, you can switch the pool's address out with yours and they wouldn't know.
We would then need masternodes to confirm the block was mined to your address to prevent other miners from taking the block you mined and switching your address with theirs and redistributing it to the network.
Except switching that out would invalidate the hash.
We just need to remove the address from the hash and put it after. Such as (hash, address) as the block.
Then we get masternodes to confirm that the block was indeed found first by that specific address.
Maybe the miner sends a hash of (hash, address) and 6 masternodes sign that hash as a potential block and distribute it to their peers.
If the miner can then respond with the origin of the hash he sent (which would be (hash, address) ) then the block is accepted by the peers.
This removes the possibility of someone stealing the miner's block.