Heat the oil in a large pot. Add the bay leaves, both types of cardamom, cloves, cinnamon and caraway seeds to the oil and saute until the bay leaves turn color just slightly.
Add the onions and continue to cook, sauteing, until golden spots appear on the onions.
Add the ginger garlic paste, saute for about 30 seconds, then add the mint and coriander leaves
Stir-fry the mint and coriander. Add the biryani masala and the cashew yogurt.
Stir-fry until the yogurt is rather dry, then add the rice and salt to taste. Stir to coat the rice with the masalas, and then add 1 1/2 cups of hot water.
Let the rice cook on an open flame until most of the water is absorbed. Then cover with a lid, turn the flame to the absolute lowest setting, cover with a lid, and let the rice steam for another 15 minutes.
Turn off the stove and let the rice stand for 10 minutes at least before opening.
Make the tofu "eggs":
Place all of the tofu egg ingredients except the oil in a bowl. Toss the tofu well with the spices and besan, taking care not to break the tofu.
Heat oil in a large skillet or griddle. There should be enough oil to coat the bottom of the pan evenly. Don't worry, if you wait until the oil is heated to the right temperature, the tofu won't absorb the oil. The way to do this is to place a tiny amount of whatever you are frying right into the saucepan. If it sizzles immediately, you are good to go.
Place the tofu in the saucepan in a single layer. If the saucepan is too crowded, do it in two batches.
Let the tofu cook over medium-high flame until the underside is golden. With a wide spatula, flip the tofu pieces so they cook on all sides.
Remove to a paper-towel-lined dish.
Add the tofu to the cooked rice and toss gently with a fork to mix.
Garnish with more coriander, if you wish. Serve hot with a vegan raita.