Pour the overnight-soaked navy beans into a colander, drain off the soaking water, and rinse under cool running water. Discard any shriveled, discolored, or cracked beans along with any small stones.
Set the Dutch oven over medium heat and add the olive oil or butter. Once it shimmers, add the diced onion, carrots, and celery and cook, stirring occasionally, for 6 to 8 minutes until softened. Add the minced garlic and cook for 1 more minute until fragrant.
Nestle the ham bone or ham hocks into the pot among the vegetables. Add the drained navy beans, pour in all 8 cups of chicken broth, and stir in the bay leaves, dried thyme, smoked paprika, black pepper, and just 1/4 teaspoon of salt.
Bring the pot to a gentle boil over medium-high heat, then reduce to low. Cover partially and simmer for 1 hour 15 minutes to 1 hour 30 minutes, stirring every 20 minutes, until the beans are fully tender and creamy in the center.
Use tongs to lift the ham bone or hocks out onto a cutting board and let them cool for a couple of minutes. Pull off any tender meat, chop it into bite-sized pieces, and return it to the pot along with the 2 cups of diced cooked ham. Discard the bone, fat, and skin.
For a thicker soup, press a ladleful of beans against the side of the pot with a wooden spoon and stir them back in, or give the pot two quick pulses with an immersion blender. Fish out and discard the bay leaves, then stir in the apple cider vinegar and add remaining salt only if needed.
Ladle the soup into bowls while hot and scatter chopped fresh parsley over the top. Serve with crusty bread or cornbread alongside.