Place the beans in a large saucepan, and cover them with 4 quarts of cold water. Bring to boil, then turn the heat down to a simmer and skim off any foam that rises to the top.
Simmer, replenishing the water as necessary, until the beans are tender, anywhere from 2-3 hours depending on the age of the beans. Drain the beans, reserving 10 cups of cooking liquid.
Heat the vegetable oil in a large saucepan over medium heat. Add the onion, garlic, celery, carrots, and pepper. Saute until the vegetables are soft but not browned.
Add the cumin, coriander, oregano, cayenne pepper, tomatoes, beans and cooking liquid. Bring to boil, then reduce the heat to a simmer. simmer for 1/2 hour. Add salt and pepper.
Remove from the heat and cool slightly. Reserve 1/2 cup of the bean mixture and puree the rest in a food processor. Return to the pot, add the reserved beans and reheat to a simmer, thinning with a bit of water if the soup seems too thick. Stir in the crab meat and ladle into bowls. Garnish with sour creme or yogurt and cilantro.