Here’s the expression I ended up using. It scales well and seems fairly lightweight. Let me know if you see any optimizations.
//Initial position variables
initCtrl1=thisComp.layer("Ctrl1").transform.position.valueAtTime(-1);
initCtrl2=thisComp.layer("Ctrl2").transform.position.valueAtTime(-1);
objPos=transform.position;
//Current positions variables
newCtrl1=thisComp.layer("Ctrl1").transform.position;
newCtrl2=thisComp.layer("Ctrl2").transform.position;
//Measurements
oldDistance = initCtrl1-initCtrl2;
newDistance = newCtrl1-newCtrl2;
xRatio = newDistance[0]/oldDistance[0];
yRatio = newDistance[1]/oldDistance[1];
//Adds relative movement to the 0 value controller
newPos=[newCtrl2[0]+objPos[0]*xRatio, newCtrl1[1]+objPos[1]*yRatio];