Sort through the beans and pick out any dried-up beans or small pebbles. Rinse them well in a colander, add them to a large Dutch oven and cover with 3 inches of water. Bring the beans to a boil for 2 minutes. Cover and let sit on the stove for 1 hour. Drain the beans and rinse again. Alternatively, you could soak the beans in water overnight.
Preheat the oven to 325 degrees F.
Add the bacon to the same Dutch oven and cook over medium heat, while stirring, until the bacon has rendered some of its fat, about 3 minutes. Turn the heat up to medium-high, add the garlic and onions and saute until the bacon is almost crisp and the garlic and onions are softened, about 5 minutes. Season the bacon with a good pinch of salt and pepper and then stir in the chili powder, sauteing for 1 minute to toast the spice and until fragrant. Stir in 4 cups water, the chicken stock, ketchup, molasses, brown sugar, balsamic vinegar, mustard and Worcestershire sauce. Stir in the beans, bring to a simmer, cover with a lid and place in the oven for 5 hours. Check the beans every few hours to give a stir. Add water to the pot, only if needed, if the beans are looking dry and to prevent them from burning. Beans are ready when they are tender and the sauce is thick.