Heat 1 tablespoon butter in a large wide pot or Dutch oven over medium-high heat.
Add the shallot, garlic and 1 tablespoon ginger. Cook, stirring occasionally, until the shallot softens, about 2 minutes.
Add the tomatoes, ½ teaspoon garam masala, a big pinch of salt and a few grinds of pepper. Cook, stirring, until the tomatoes are soft, about 2 minutes.
Stir the lentils into the tomato mixture until coated, then add 3 cups water.
Bring to a simmer and cook, stirring occasionally, until the lentils are tender and thick, 12 to 15 minutes.
Meanwhile, toss the shrimp with the remaining 1 teaspoon ginger, 1 teaspoon garam masala and a pinch each of salt and pepper. Let stand 10 minutes.
Heat the remaining 2 tablespoons butter in a medium skillet over medium heat.
Add the shrimp and cook, stirring, until just cooked through, 3 to 5 minutes.
Stir the spinach and coconut cream into the lentils until the spinach wilts; season with salt and pepper.
Divide among bowls. Top with the shrimp and any juices; sprinkle with the cilantro.
