Presoak the beans. We prefer the quick presoak method. Rinse beans, put them in a large pot with a tight-fitting lid and cover with cold water by 2 to 3 inches. Add 2 teaspoons of kosher salt, bring the pot to a boil and let it boil, uncovered, for about 2 minutes. Cover the pot and turn the heat off. Let the beans soak for about 2 hours. (You can also use the slower traditional presoaking method, putting beans in a large bowl and filling with enough cold water to cover by at least four inches; add 2 teaspoons kosher salt and stir to dissolve, then soak 8 to 12 hours.) Drain the beans and rinse.
Combine beans, broth, water, bay leaves and 2 teaspoons kosher salt in a large Dutch oven. Bring to a boil over high heat, then reduce to a simmer, cover, and cook until beans are just tender, about 45 minutes.
Meanwhile, heat bacon in a large skillet over medium-high heat. Cook, stirring often, for about 3 minutes. Add chorizo (removing from casings if if not loose) and cook, breaking it up with a wooden spoon, until just cooked through, 4 minutes or so.
Add onion and jalapeño, and cook, stirring, until softened, about 4 minutes. Add garlic and cook, stirring, until fragrant, about 30 seconds. Add tomatoes and chipotle pepper, and cook, stirring and scraping up browned bits from the bottom of the pan, until the liquid is thick, about 3 minutes.
Add tomato mixture to beans in the Dutch oven, and continue cooking uncovered, stirring occasionally, until beans are completely creamy and liquid has thickened into a creamy broth, about 20 minutes or longer. Adjust seasonings with salt, if needed. Discard bay leaves, stir in cilantro and serve.