I'll have a look at boldness values then and see if I can find algorithms to fix.
I'm not in favor of setting it low for everyone, since a lot of non-combat decisions are also boldness-based. For example, an AI with low boldness will never settle cities near opponents' cities, even if it would nab them a crucial tile and they have the military to defend the new city.
Beliefs aren't selected randomly: instead, they are scored, then a random belief is selected out of a weighted list of the top 3 scoring beliefs. Firaxis realized they couldn't just make general flavors for beliefs because they are so conditional, so scoring is effect-based instead of per-belief (much like how promotions are also effect-based).
Scoring is done via ScoreBelief(), which is split into 3 parts doled out to 3 C++ functions: ScoreBeliefAtPlot() (where unowned plots, owned but not worked plots, and worked plots get different weighting), ScoreBeliefAtCity(), and ScoreBeliefForPlayer(). Each belief effect has a different way of getting scored, and although I did a bit of tweaking previously, it was fairly minimal and not that thoroughly tested (only the AtPlot() ones were out of necessity). If you want, I can try listing all effects' scoring so you don't have to read through my poorly written CvReligionClasses code.
I've done a few changes to plot patrolling, eg. the AI now prefers patrolling on border and/or road tiles (former to keep an eye on its territory, latter so that mobilization is quick), and coupled with the DangerPlots changes, I don't think it's that problematic in my v10 dev version.
I made a few code rearrangements to try to reduce undesirable unit disbanding (eg. the AI would start counting up its "obsolescence doomclock" even if it was in a war pre-v10, so I've rearranged that to no longer happen in my dev v10 version). I'm still quite reliant on the original obsolete unit disbanding logic though, primarily because I've been more worried about other things (like some combat bonuses actually being applied incorrectly, or the fact that the AI could not calculate the amount of ranged damage a unit would deal out of a tile other than the its current one) to address it properly.
I haven't been seeing that barbarian camp loop in my v10 version (and I've been looking a lot at how the AI calculates when to attack), so I assume my new DangerPlots eliminates the issue. Plus I've sort of reworked the attack launching algorithm due to having done away with queued attacks, which are quite possibly the stupidest thing Firaxis has ever made: they have absolutely no benefit, not even a minor one (like being able to handle groups of units a bit easier for operations), they require a boatload of extra code, and they lead the AI to make poorer decisions. Pre-v10, queued attacks mean that the AI always queues up units to attack a target based on expected damage output, then it fires off all attacks at once and hopes the random rolls go its way. In v10, the AI will fire off attacks one-by-one and decide whether to continue and/or attack with more units after the combat rolls have happened, just like a human player would.
Also, the Experimental GitHub branch for the mod is a bit outdated due to me having had a busy few set of weeks and not having the time to properly commit my changes.