In doing my own mod, I've found that property slots are seemingly hard-coded. It seems to cause conflict when additional slots are created, even if those are defined in portrait_properties.txt and portraits.gfx. Granted, my knowledge has increased since then, but so far no dice. I've heard talk of a potential workaround by combining red dots/boils into one and defining it in the properties file, which could free up a whole new property slot.
The cap on frames (by experimenting with it) seems to be set at 27. And, you are further limited by the nature of portrait_properties being global. So, the slot for Papal headgear can't used by anyone but the Pope. In my Cuman mod, I've included a Tengri Shaman Clothing/Headgear set. However, let's say I want a second Martial Helmet for the Muslims, and figure that I can put it in the same slot on the Muslim graphics. Well, unless that muslim fits the criteria in portrait_properties, it's irrelevant. Now, I've thought about the idea of making "Swing Frames" where the properties are listed between multiple exclusionary criteria for pieces (for instance, a factor = 0 for everyone else but the Pope, Caliph, Ecumenical Patriarch, etc. on their respective headgear) and making set graphical cultures for each group, but with clothing now untied to culture, I don't know if that would cause conflict. That solution, if able to be implemented, allows multiple types of the same 'category' to occupy the same slot, and would condense religious wear into smaller units. The end result would free up some three to five slots depending on which portrait mod you wanted to use.
This all hinges on whether or not a way is found to break the cap on portrait frames, either horizontally, or maybe a dev pushing down a solution that allows multiple rows instead of just a single one (or specifying how to add new slots). As of right now, those limits are unbreakable (as far as I've tested).
For jewelry, you could make a set that is tied into the same slot as a topical portrait piece, like headgear, and maybe call it headgear_jewelry or something, and make the total frames more or less than the actual headgear. This would cause the alphabetical looping to 'randomize' the jewelry since the same letter designation would hit a different slot. As long as it was layered properly, it would display over everything and could work. However, the effects would be entirely uncontrollable unless you spent time to see what myriad of combinations would exist from incongruent numbering, depending on what variables you had for each piece. It would randomize the process, but a pattern would develop depending on the criteria for each piece, which would have to be used to determine frame location, unless the properties for each piece were made criteria-neutral.