Add dried beans to a large bowl cover with three inches of water. Soak the beans 8-24 hours (easiest to do overnight). When ready to use, drain beans in a colander, rinse and remove any debris.
Optional: Heat a large Dutch oven/soup pot over medium heat. Add bacon and cook until crispy, approximately 10 minutes. Use a slotted spoon to transfer bacon to a paper towel lined plate. Pour off all but 2 tablespoons fat from the pot.
If not using bacon, melt 1 tablespoon butter with one tablespoon olive oil in a large Dutch oven/soup pot over medium heat.
Add onions, fennel, celery and carrots and cook at medium-low until translucent and tender, stirring often, about 10 minutes (we are sweating the vegetables- they will not turn golden). Increase heat to medium high and add garlic and cook for 30 seconds.
Reduce heat to low and add beans, hambone or chicken/ham, chicken broth, 2 cups of water, diced tomatoes and all seasonings. Bring the soup to a full boil then reduce to a simmer, cover, and cook for 60 minutes, removing the lid to stir and replacing it occasionally.
After 60 minutes, add potatoes and continue to gently simmer, covered, for an additional 30-60 minutes or until beans and potatoes are tender. Add additional water if it evaporates too much.
Once tender, if using a hambone, remove it from the soup and chop off any ham and add the meat back to the soup.
Add additional water to reach desired consistency. Taste and season with additional salt to taste (this will depend on how salty your ham is). If using chicken, you will definitely want to add salt. Top with bacon and chives.