This is definitely a technique I have used before for things like this and I got it working with freely tranfroming everything before. If you want to, you could send me a PM with a way to download your rig (a public google drive or similar) and I would check it out and see if I find an easy way to fix your rig.
First to the easy question, what I mean with a "direct connection" is exactly what it sounds like, a connection that goes directly from the driver value into the driven value. Most beginners use the connection editor for this since it is an easy to use UI, but if you are going to do a lot of direct connections, I would use the the node editor for it.
The benefit of direct connections is that they are the fastest way to connect two values when it comes to playback speed, there is no math involved, maya just tells value B to mirror what value A does.
The down side of them is that they just know about local space, so if you have a control directly connected to something else, but you move the object above the control, the connected object won't move, since local values don't change on the control. Thats why direct connections are mostly used in "mirror hierarchies" where for every joint you also have a control in the hierarchy, so they behave the same local space, which works well for FK setups. But it gets harder for IK setups.
So for more complex connections where you want one object to follow another object, constraints are the way to go. I would basically think of Constraints as the same thing as you did with your expressions, just optimized as far as possible, they only update when they need to, their only purpuse is to do what they do, so maya knows how to handle them.
Now to the more tricky question of how to create an oval rig like this. I would probably create a rig where the joints move along a surface or a curve by using an offset value instead of having a moving curve that is deformed. There isn't really a "right way" to do it, since setups like this need to be evaluated on a case by case basis.
The three most common ways to achieve something like this are:
1) Motion paths and curves. Motionpaths are quite easy to use, but can be problematic with flipping at the point where the end of the curve connects to the start.
(In this case the U value of the objects would be driven by a linear set driven key that has linerar pre and post infinity.)
2) Surfaces and UVPin Constraints. Quite a bit harder to set up, but you normally don't have to worry about flipping at the start and end.
(In this case the U value of the objects would be driven by a linear set driven key that goes from 0 to 1 and has cyclic pre and post infinity)
3) Using a MASH instancer with a curve. This is probably the most modern setup, it involves a bit more math (which is done automatically so you don't have to worry about it) which affects the performance a bit, but it doesn't need joints or skin clusters so that evens it out more or less. Also its quite easy to set up and pretty robust and should be enough for treads that are kind of hidden under the robot like yours.
I personally would probably go with a setup like this for your rig. Here is a tutorial that explains how setups like this are done:
https://www.youtube.com/watch?v=R6WBrG1Pocw
I hope it helps, let me know if you want me to look at your rig 🙂