Nut butters (peanut, Cashew, Hazelnut), high calorie, high fat ("good" fats), High protein, are good ways of getting more calories into a baby with a small appetite. He may not be getting enough protein for growth, if he's not eating much.
Olive oil - add it to everything you can - easy to do if you make his food, but just as easy to add a teaspoon to a jar of baby food!
Don't use any "low fat" versions of food, yogurt, milk etc should be full fat.
I am shocked your health visitor thinks it's "ok" to be 1st centile and clearly underweight, as it would suggest he is "failing to thrive" - and I would say that should be looked into - a GP could refer DS to rule out any medical reasons for his weight/stature, and you would get feeding advice appropriate to his needs from the consultant.
This happened with my DS2, 3rd centile and clearly underweight at 18 months, he was referred by GP and had various checks (heart was checked, lungs, whole body examined), nothing was actually wrong, got advice on how to get more calories in to him as he had a small appetite. Had 6 monthly reviews for a couple of years to track his growth.
He's 16 now and just under average height and I'm sure he would never have reached anywhere near average if we had stuffed him full of nuts and olive oil until he was about 8 (when his appetite improved).