Peel onions, chop 3 onions finely and slice the remaining 2 very fine. Heat ghee and oil in a large heavy saucepan and fry the 2 sliced onions, stirring, until golden brown. Remove from pan and set aside.
Add the chopped onion, garlic and ginger to the oil left in pan and fry on low heat, stirring occasionally, until very soft and turning golden. Long, slow cooking at this stage is essential if the curry is to have good flavor.
Add the coriander, cumin, turmeric, fennel and chili powder and fry, stirring, for 1-2 minutes. Add salt, tomatoes and half the fresh herbs, stir well and cook until tomatoes are pulpy.
Cover pan to hasten this process, but uncover and stir now and then to ensure mixture does not stick to base of pan.
Put in the chicken pieces and stir well so that each piece is coated with the mixture. Cover pan and cook on very low heat for 40 minutes or until chicken is tender.
Meanwhile heat oil and fry half the almonds until golden. Grind remaining almonds. Beat the yogurt with a fork until it is quite smooth and stir into the curry together with the fried almonds.
Simmer 5 minutes, uncovered. Stir in the garam masala, reserved fried onions, ground almonds and remaining chopped herbs. Heat through and serve.