Place the navy beans in a large bowl and cover with 6 cups of water. Let them soak overnight (8–12 hours), then drain and rinse before cooking.
Quick-Soak Method (if you forgot to soak):
Add the beans to a large pot with 6 cups of water. Bring to a boil and cook for 2 minutes. Remove from heat, cover, and let sit for 1 hour. Drain and rinse before using.
In a large stockpot or Dutch oven, heat the olive oil over medium heat. Add the diced white onion and sauté for 3–4 minutes, until translucent. Add the ham bone, chopped ham, soaked beans, and chicken stock. Stir to combine. Add bay leaves, celery seed, salt, and pepper. Bring to a boil, then reduce the heat to low. Cover partially and simmer for 1½ to 2 hours, stirring occasionally, until the beans are tender and the soup thickens naturally .For a thicker soup, you can either mash some of the beans with a wooden spoon on the inside of the pot, or let simmer uncovered until desired thickness.
Remove the ham bone and bay leaves. If desired, shred any meat from the bone and return it to the pot. Adjust seasoning with additional salt and pepper, if needed.
Ladle the soup into bowls and garnish with a sprinkle of diced white onion and fresh parsley.