Simple Answer: Enforce Type Interactions
Pokemon video games (and the card games) tackles this idea with type. Water beats Fire, Fire beats Grass, Grass beats Water. The simplest answer is to modify the damage based on the characteristic of the receiving type, rather than adjusting the attack itself. Applying types to your units is fairly trivial, and leaves room for creative development.
However, based on your examples, it appears your looking for types to have overall strategies that are good against each other. That is to say, rather than A being being good against B 'because I said so' (Water being good against Fire makes logical sense, but ultimately is because the developers said so), it sounds like you're looking for a strategy that arises from the qualities that game objects have.
Complicated Answer: You need more than 3 mechanics
The difficulty with answering this question is that having a compelling metagame where different types of gameplay match up well against each other is kind of what game designers continuously do. Any answer is going to require you try lots of combinations and record win rates for certain strategies, tweaking the power of each strategy until you get something desirable.
Actually, having a 'perfect' situation where A beats B beats C beats A is undesirable. Imagine I sit down with by deck of B units, and my opponent starts playing A. If A always beats B, I might as well forfeit. That's obviously not a design that's fun for the losing side, and probably not even fun for the winner. So the question is, what can we do so that A usually beats B, but B can earn an underdog win with good gameplay (and perhaps some luck)?
B player needs some mechanics that are good against A that it can include (perhaps by including these mechanics, it is worse against C players and other B players.) As it stands, there are only about 3 mechanics spread out among 3 types, and that's not enough for just those three types. I would imagine you may need 2-3 gameplay mechanics per type for just 3 types. For 5, that may expand out to 5-6.
The good news is that you can do this without increasing the complexity of each card. Trying to squeeze a dozen gameplay mechanics on one unit is probably impossible, but not all units have to have each mechanic. I would strongly recommend looking at Magic: The Gathering for an example of a game that does this well.
For instance: some Colors (Colors in Magic are roughly akin to your unit types.) have flying: they tend to be weaker, but can only be blocked by other flying creatures or creatures with a specific flying-blocking ability. This gives 'B' a strategy against 'A': B may have enough to hold off A's creatures for a time because of its high defense. A mechanic like flying would allow B to put out a flying creature, and then hide behind its big walls until the flying creature eventually deals with A. It's not ideal (and shouldn't be: A is supposed to be strong against B) but it gives B a fighting chance.
Also consider First Strike: In Magic, creatures deal damage to each other at the same time. An ability call First Strike changes that and causes the creature to deal damage first. This can tweak even creatures with small defense to be really strong, as they may be able to kill a powerful thing with low defense before it has the chance to strike back.
These keywords (First Strike and Flying) can be tacked on to a creature: a creature without them doesn't have to be overwhelming.
Consider Knight of the Keep. (Ignore the text on the card in italics.) That creature has no abilities and is fairly simple, clean, and easy to read. A beginner who knows the basic rules knows how that works.
Consider Enforcer Griffin. It has flying, but it still is fairly simple in how it looks. Once players learn how flying works, the card doesn't seem too complicated.
Consider an extreme example, Zetalpa, Primal Dawn. It has a whopping 5 keywords, and would be pretty confusing for new players. However, it didn't make Knight of the Keep any more complicated, because Knight of the Keep didn't have to worry about things like 'trample' or 'double strike'.
In this way or through some similar mechanics, you can add complexity to certain units to give them a more flexible role, without increasing the complexity of all of your units.
Ultimately though, for 5 types I believe you will need more than 3 gameplay mechanics. Proper balance between them will require a lot of testing and tweaking. That's what separates good from bad games. Mechanics that are fun, not overwhelming to players, and create ways for players to express their skill are what make or break the game. We can give you examples we like/dislike, but original ones will have to come from the developer.