Heat the oil in a 4 to 5 quart dutch oven over medium heat, until shimmering. Add the onions, celery and a pinch of salt, and sweat until soft, 5 to 8 minutes.
Add the ginger, garlic, carrots, and another pinch of salt to the pot and mix well with the onions and celery. Cook for 5 minutes, or until the carrots start to take on golden edges.
Pour in the stock, and increase heat to medium-high to bring to a light boil. Reduce heat back to medium, and cover partially with a lid. Simmer for 20 minutes, or until the carrots are tender and smash readily against the side of the pot with a fork. Remove the pot from the heat.
Use an immersion blender to create a smooth puree (or, use a regular blender, working in batches). Taste, and add salt and pepper as desired.
Stir in the coconut milk. Ladle into bowls and top each with a dollop of sour cream or creme fraiche and a sprinkling of cilantro.