where do dApps run, and who gets ETH for that?
It's important to understand that every node keeps an exact copy of the same Ethereum Blockchain, ledger and that everything in Ethereum is designed to be deterministic.
In order for a node to remain in-sync with the rest of the Ethereum network, they must see the same transactions as the rest of the network and execute these deterministic transactions at around the same times as the rest of the nodes on the network.
What this means that every node* when it receives a new, latest & valid block is processing every transaction (balance transfer, every smart contract function call etc.) to apply these changes to their local copy of the Blockchain..
Only the miners, however, are receiving the block reward and the transaction fees included in every, successfully integrated block.
A great thing about Ethereum is that it is an open, public network - you may run a node and participate in the network operation. You can even set your node to try mining a new block; without a substantial amount of hashing power, it is unlikely that you would be able to mine a block on the main network though.
Bonus, extended answer
I like to think of a Dapp (decentralised application) as more than just the, Ethereum, smart contracts - @Eth provides a very good overview of what a Dapp is:
A DApp can have frontend code and user interfaces written in any language (just like an app) that can make calls to its [Ethereum smart contract] backend. Furthermore, its frontend can be hosted on decentralized storage such as Swarm or IPFS.
In the case of the front-end code be hosted by a decentralised file system such as Swarm, Storj etc. then there are other nodes providing resources (in this case file storage) and receiving payment in Ether or tokens for this service.
Depending on the complexity of your DApp, it may also need to provide an incentive mechanism to operate in a truly decentralised manner. For example, BTC Relay requires - and incentivises - Bitcoin block headers to be submitted to a contract:
Relayers are those who submit block headers to BTC Relay. To incentivize the community to be relayers, and thus allow BTC Relay to be autonomous and up-to-date with the Bitcoin blockchain, Relayers can submit block headers to BTC Relay. When any transaction is verified in the block, or the header is retrieved, Relayers will be rewarded a fee