Generally, in order to be fair, the tax system tries to tax every 'new bit of value' once.
With CGT, you're paying tax for the first time on the 'new value' that comes from your asset appreciating. CGT should normally exclude inflation, which is why CGT is usually lower than income tax, to approximate the genuine increase in value of the asset (some countries charge the same rate as income tax but offset losses and inflation but it adds complexity).
Residential property is an anomaly. It probably should be subject to CGT, but that has side effects.
VAT isn’t really paying a second time on your taxed income. It's the tax due from the manufacturer taking some input materials and adding value to them, then selling the result at the higher price. That's why it's called 'Value Added tax'.
The collection mechanism is that the company collects the tax on their selling price, then the offsets the VAT they themselves paid on whatever they bought: that way when there's a multi-step manufacturing chain, each step only pays tax on their own 'value added'. It's quite clever, really.
So although the end-consumer sees the entire final VAT in their invoice, it's really a tax on the value created by each manufacturer.
Council tax and road tax are very obviously a way to collect funds for specific state-run services such that people using the service are paying most. That's not double taxation, just more fine-grained control over one part of taxation (instead of bundling it into an increased income-tax for all).
Companies are taxed multiple times. Maybe that's OK. Similar to progressive tax rates: not really fair, but morally preferred.