Place beans and ham hock in a 4-quart, thick-bottomed pot. Add 5 cups water, bay leaves, salt and baking soda. Bring to a boil, reduce heat to a low simmer. Cover and let cook 1 hour 15 minutes to 1 hour 30 minutes, until beans are tender. Remove bay leaves. Remove ham hock from the pot. Cut ham meat away from the bone and cut into small, bite-sized pieces, set aside.
Heat olive oil in a large 8-quart thick-bottomed pot on medium high until the oil is hot, but not smoking. Add the onions, celery, sweet potato and 1/2 teaspoon of salt. Cook, stirring occasionally, until lightly browned and softened, about 10-15 minutes. Reduce heat to medium, add the cumin, chili powder, and garlic, cook for an additional 2 minutes, stirring constantly.
Add the beans, their cooking liquid, chicken stock, molasses, and bell pepper. Bring to a boil then reduce heat to a simmer. Cook, stirring occasionally, for 20 to 30 minutes.
Remove 4 cups of the soup (about half of it) to a blender. Puree until smooth and return to the pot of soup. (You may need to purée the soup in smaller portions, depending on the size of your blender. Don't fill the blender more than half way at a time and hold the lid while blending.) Add back the ham pieces to the soup. Add 3 tablespoons of lime juice. Adjust seasonings. If on the sweet side, add a bit more lime juice. Salt to taste.
Serve with garnishes.
Makes 8 cups. Serves 6.