I cannot advance significantly further without using better design patterns in order to simplify logic. In this department, i believe the way to go is to start using decision trees, decisions taking multiple game frames if necessary for smooth performance; a well-designed support library is needed for that.
Generally, playing in a random way is essentially playing worse, because there are relatively few good strategies in the game for now (personalities already cover them mostly). NullBot3 is already much more surprising than the original NullBot because adaptation methods produce non-trivial results (for example sometimes it decides to spam mortars against offensive armies, because they fit just right against the tank:cyborg ratio he sees).
It would be great to make it attack from different corners or even from multiple directions at once (a tactic humans often underestimate - yes you engage with weaker army, but you do a lot of damage to the enemy base with your other half, so as long as you have enough defensive advantage to survive an all-in, not even necessarily an overally stronger army, it's well worth it, not to mention the possibility of surrounding and slashing droids that retreat to repair), but that'd require terrain analysis, which i've little idea how to implement. Having terrain analysis would open up a huge bunch of possibilities such as auto-detecting choke points, engaging in combat on them in concave formations.