If running the client provides a valuable service to the network, shouldn't that be rewarded?
The reward scheme is not optimal in Bitcoin. It relies on charity in order to produce some "public goods", thus they are underproduced.
This doesn't make Bitcoin unviable though. Bittorrent also works in practice even though seeding is pure charity.
Note that the reward scheme for mining isn't optimal either. Once the block reward approaches zero, miners get rewarded for faster transaction processing, but they don't get rewarded for securing the network, which is their main purpose. Securing the network is just a positive externality.
The initial block reward
is a direct reward for securing the network, however it is somewhat arbitrary and it ignores how much security consumers want and how much they are willing to pay for it. It could be too high or it could be too low.
You can't give a direct reward for relaying because that would be too easy to abuse. Someone could just set up 1,000,000 clients on 1,000,000 IP addresses relaying among themselves, with a few outward connections, yet that wouldn't contribute much to the resilience of the bitcoin network.
The topology and connectedness of running clients needs to be rewarded as well.