A [Dirichlet process](http://en.wikipedia.org/wiki/Dirichlet_process) might be useful. I don't understand them, but I think they are used in this kind of problem. I have seen them used in [modelling molecular evolution](http://www2.lirmm.fr/mab/IMG/pdf/phylobayes2.3.pdf), especially amino acid sequences.