In a an large saucepan over medium-high heat add the beans, ham, bay leaves, water, and baking soda. Bring to a boil. Stir in salt, reduce heat to low, cover, and simmer briskly until beans are tender, 75 to 90 minutes (if necessary, add another 1 cup water and continue to simmer until beans are tender); do not drain beans. Remove and discard bay leaves. Remove ham steak, cut into 1/4-inch cubes, and set aside.
For the Soup:
Over medium-high heat, add oil to a large Dutch oven (or large, heavy-bottomed pot) over until shimmering but not smoking. Add onions, carrot, celery, and salt and cook, stirring occasionally, until vegetables are soft and lightly browned, 8-10 minutes. Reduce heat to medium-low and add garlic and cumin; constantly stir until fragrant, about 1-2 minutes. Stir in cooked beans, bean cooking liquid, chipotle sauce, and chicken stock. Increase heat to medium-high and bring to a boil. Reduce heat to low and simmer, uncovered, stirring occasionally, to blend flavors, about 30 minutes.
Ladle 3 ½ cups of soup into food processor or blender, process until smooth, and return to pot. Stir together cornstarch and water in small bowl until combined. Gradually stir in cornstarch mixture into soup; bring to boil over medium-high heat, stirring occasionally, to fully thicken. Off heat, stir in lime juice and reserved ham. Top with garnishes and serve immediately.