Place the urad dal and rajma together in a large bowl and wash in three to four changes of water, rubbing the beans to remove all the dirt that may be sticking to them. Finally, top the beans with water by at least three inches. Let the beans soak at least eight hours or overnight.
Place the drained beans and lentils in a large stockpot along with 1 tsp of garlic and a bay leaf, if using. Cover by at least an inch and a half of water and bring them to a boil. If you see a white, frothy layer accumulate on top, skim it away. Cover and cook the lentils for an hour and a half or until the black lentils are really tender and the kidney beans are cooked but not falling apart.
Place 1 tbsp of garlic and the ginger in a mortar and pestle and crush into a coarse paste. Set aside.
Blend the cashews with 1/4 cup of water into a very smooth cream. Set aside.
Heat the oil in a saucepan. Add the ginger-garlic paste, saute until the garlic begins to turn blonde, then add in the paprika and the kasoori methi. Stir quickly and immediately add the tomato puree.
Cook the tomato puree for five minutes, stirring frequently. Stir in the sugar and add the cooked dal along with the liquid it was cooked in. If it looks like you have too much liquid, hold some back and add according to the consistency you want. If there's too little liquid, add water to thin the dal out.
Bring the dal to a boil, cover, turn down the heat, and let it cook for five minutes. Use a potato masher or a heavy ladle to mash some of the lentils so the consistency gets creamier. Stir in the vegan butter and salt to taste. Add the cashew cream.
Check seasoning and add more salt if needed. Turn off the heat and serve hot or warm before serving.