In a large stockpot, or dutch oven, over medium heat add the butter. Sear the ham bone lightly on all sides, take the ham bone out of the pot, and set aside.
Add the onions, carrots, celery, and garlic to the pot and cook over medium-low heat stirring occasionally until the onions are translucent, 5 minutes. Add the ham bone back to the pot along with the diced ham, 1 can of the navy beans, the bay leaf, thyme, black pepper, chicken stock, and water. Scrape any bits off the bottom of the pot.
Place the remaining beans in a shallow bowl or plate and crush them with the back of a fork to form a paste, this will help to slightly thicken the soup, place the crushed beans in the pot. Bring to a boil, reduce to a simmer, cover, and simmer for at least 60 minutes, stirring occasionally.
Take the ham bone, bay leaf, and thyme sprigs out. Discard herbs pick off any meat you can from the ham bone and add it back to the pot. Taste and add salt if necessary. Serve.