It's certainly possible to "roll your own" but it does indeed involve some work. I wouldn't say "too much" work, nothing a little elbow grease won't fix. Probably the easiest way would be to create a theme.json with placeholders for colors that can be replaced with user-defined colors at runtime by applying a global replace function on the entire file for each placeholder.
Or you could properly parse and edit the json file using the various json objects PB supplies. No placeholders needed and not as brute-force-y as the previous approach but more difficult to pull off.
I just wish PB themes would support:
1. transparent and partially transparent image files instead of strictly solid-color bitmaps for the control menu buttons
2. seperate files for active and inactive window buttons in hover state.
I've written a simple bitmap color replacer that got me around issue #1 but not the second. When active and inactive windows have different titlebar colors, hovering over the inactive buttons creates a color mismatch. It's not too bad when the colors aren't too different but if you go crazy and have, say, orange active titlebars and green inactive ones, it would be a rather jarring effect. Even more jarring than an orange/green theme would inherently be, that is.
Support for semitransparent greyscale pngs would alleviate this.