Nice and easy way to do this is to set the fare per tile, so a journey of 3 tiles would cost $/£/€ (insert amount here), and a journey of 500 tiles would cost $/£/€ (insert amount here).
The reasoning behind it is that you have company A running from A to B (10 tiles) and B to C (15 tiles), and they have a competitpr that runs from B to C, The vehicles being used will collect any cargo waiting, so Company A will get to B and have no cargo waiting, and will make a loss on the journey from B - C.
But, if you had fares, Company A could set a fare of £1 per tile, and Company B £2 per tile, This makes Company A more attractive, meaning that Company B now has no passengers, even though it is a shorter journey it's fare is too high.
It could add a great level of competition to the game, as currently once you have set up the routes and added vehicles you can leave a game for a few hours, whereas with fares it would require great skill to get the correct fare against the running costs of a vehicle.
I don't see this making it in to any of the major releases, but if it could be integreted into CargoD(e/i)st or Infrastructure Sharing then it would make me smile.
