Sort and rinse the beans, then soak in about 8 cups of water for at least 6 hours or overnight.
Heat the oil and butter in a large pot over medium heat. Add the onion, leek, celery, and carrot and cook until softened. Stir in the garlic, mustard powder, and dried herbs and cook until fragrant. Remove most of the vegetables and set aside.
Add the ham hock to the pot, then drain and add the beans along with 5 cups of water. Bring to a gentle boil, reduce heat, cover, and simmer for 1½–2 hours, checking for tenderness after 1 hour.
Remove the ham hock and return the reserved vegetables, cooked ham, and rosemary to the pot. Simmer 15 minutes more. Remove rosemary, shred any remaining meat from the ham hock, and add it back to the soup. Mash some beans if desired for a creamier texture. Season to taste and serve with parsley and green onions.