Rinse the whole urad dal and kidney beans and scrub them with your hands; drain the water and repeat this process a few times.
Cover the lentils and beans with a few inches of cold water. Add the baking soda. Soak for 8 hours (or overnight). Drain and rinse several times, until the water runs clear. Note: you can quick soak them by covering them with boiling water for 4 hours. Cook the lentils and beans. Transfer them to a medium saucepan and cover with 1 to 2 inches of water and ½ teaspoon kosher salt. Cover and bring to a boil, skimming off the foam that rises to the surface once it starts to boil. Boil uncovered for 10 minutes, then reduce the heat to maintain a simmer and simmer for 80 to 90 minutes until the beans and lentils are very soft. If the water evaporates during simmering, add freshly boiled water as needed.
Fit a bowl underneath a colander and drain the lentils and beans, saving the cooking liquid. Measure out the cooking liquid and add enough water to make 3 1/2 cups (4 cups for a slightly looser dal). Mash the lentils and beans with a potato masher, fork, or large wooden spoon. Set both aside for now.
Start cooking the dal. Heat the 1 ½ tablespoons oil in a deep saute pan or Dutch oven over medium-high heat. Once hot, add the cinnamon stick, cardamom, cloves, bay leaf, and cumin seeds. Cook for 45 to 60 seconds, swirling the pan frequently, until aromatic and sizzling.
Add the onions with a pinch or two of salt. Cook, stirring occasionally, until the onions are starting to brown, 5 to 7 minutes. Add in a few splashes of water towards the end to pick up the fond and to prevent them from getting too brown.
Add the garlic and ginger, and cook for 1 minute, tossing frequently. Add the tomato paste, nutmeg, coriander, red chile powder, 1 1/2 to 2 teaspoons of kosher salt, and pepper to taste. Stir frequently for 60 to 90 seconds. Add the tomatoes and their juices, and cook until broken down and softened, 2-3 minutes.
Pour in the bean liquid/water mixture and scrape up any browned bits to deglaze the pan. Add the mashed lentils and beans, and stir well.
Bring to a boil, then reduce the heat to maintain a simmer. Stir every 10 minutes for at least 60 minutes, or up to 80 minutes (slow cooking enhances the flavors and makes it extremely creamy). During simmering, add more freshly boiled water, as needed, if it looks like it’s drying up.
Pour in the cashew cream or coconut milk and simmer for another 10 minutes, stirring occasionally to prevent sticking.
Dhungar Method (optional, for smokiness). Take a small stainless steel or glass bowl and position it in the middle of the cooked dal. If you don't have such a bowl, take a medium onion and cut it in half, around the orbit. Hollow out one half.
Using tongs, take a 1 to 2 inch piece of lump charcoal and hold it directly over an open flame (I use my gas burner). Rotate it from time to time and heat for 2 to 3 minutes, until it turns red hot in spots and has a few white markings. Note: I don't recommend heating it for more than 3ish minutes, as the smoky flavor can become overpowering.
Working as quickly as you can, transfer the charcoal to the small bowl and pour ½ teaspoon of neutral flavored oil on top of the charcoal (it will start smoking immediately). Cover the pan with the lid and steam for 2 to 3 minutes. Remove the lid and use tongs to remove the small bowl. Discard the charcoal. Stir the dal again.
Add in the cilantro and lemon juice and season to taste with salt. If it’s a bit too acidic for your taste, add the sugar. Fish out the cinnamon stick and bay leaf.
Make the tadka. Heat the vegan butter in a medium frying pan on the stove over medium high heat. Once melted, add the ginger (if using) and cook for 30 seconds, stirring frequently. Crush the kasoori methi with your hands into the dal, and add the garam masala and red chile powder. Cook for another 30 seconds, swirling the pan frequently. Pour the tadka over the dal and serve.
If making the cashew cream. Cover the cashews with some water in a saucepan. Bring to a boil and boil for 15 minutes. Drain and rinse cashews (Or soak overnight in cool water). Transfer the drained cashews to a food processor. Add the water, lemon juice, and salt. Blend for 3-4 minutes, scraping down as you go, until all cashews are pulverized and the mixture is smooth.Note: you can double this recipe and make it in a high-powered blender (the amount here doesn't have enough liquid for most blenders)