surely there's no way to take the bitcoins off the miner that generated the orphan block?
Wrong. If a block is orphaned, the reward (including transaction fees) is invalid (or more accurately, it no longer exists in the main chain) and the unlucky miner loses the coins. For this reason, newly mined coins cannot be spent until 120 confirmations.
The fees are not lost, however. Since the transactions that were in the orphaned block are no longer in the main chain, they are now unconfirmed and back up for grabs by another miner. The next miner who includes those transactions in a block gets the fees.