Final solution - https://playground.babylonjs.com/#P5F4RL#28
I implemented a 3 step algorithm. First if the number of facets is less than or equal to 36 (which is the min facets for a 12 sided die (simple d6 example), then all of the facets are side facets. If not, filter the facets by sorting by surface area and culling any facets whose area is less than 10% of the smallest area. After that, if the number of facets remaining is less than or equal to 36 (d20 example), we’ve found them all, else filter remaining facets by those whose facet normal is aligned with the vertex normals (complex d6).
It works for my 3 example meshes, though There could still be issues depending on how the die is modeled. Thanks for the help and advice.