There has been no double dipping. Your taxable benefits are taken into account when determining your entitlement to all or part or none of the personal allowance. The fact that the car benefit may have been in your tax code does not mean that you have been taxed twice on it, once through the tax code and then through self-assessment. That would be completely untenable and it has simply not happened.
The amount of tax shown on your P60 will have taken account of the car benefit if it was in your tax code. That tax deduction figure is deducted from your overall liability to arrive at the net underpayment or overpayment.
Your income in 2011/12 was £128,700 (£105,938 + £22,762). The point at which you lost entitlement to the personal allowance in 2011/12 was at an income level of £114,950. The personal allowance was £7,475 for 2010/11.
On an income of £128,700 with no deductions, you should have paid income tax of £44,480 as you will see if you use the calculator here. You deduct from that the tax shown as deducted on your P60 which was £38,374.80 and you are left owing £6,105.40. You appear to have paid an additional £2,791.20 which reduces the underpayment to £3,314.20.
You say the tax office say your total liability is £43,420.60 as opposed to my calculation of £44,480. The difference may be caused by gift aid relief or pension contribution relief. Those will reduce your overall tax liability. If the figure of £43,420.60 is correct, then you still owe £2,254.60.
Underpayments occur for many reasons, the main one being an incorrect tax code. I suspect that you had a personal allowance in your tax code for 2011/12. The car benefit may not have been spot on either. Tax codes should be checked before the start of a tax year. If a tax code is incorrect, the tax deductions will be incorrect.