Not sure what you have tried, but seems to me you could cover everything with valueAtTime() expressions. Not sure what you consider "time-consuming" and "inefficient" about 7 lines of code or so, but yes, of course expression evaluation will slow down things a bit. not sure I follow your argument about positions being more complicated - as long as you change only the timeing, not the values, the same expression could be used. anyway, without seeing what you have, it's impossible to judge and advisde on how to proceed. Otherwise you could always try time-remapping a pre-comp, where possible, of course....
Here's an animation preset that I've shared several times on this forum. It is entirely based on the in and out points of a layer. You use it by setting the initial position of a layer. It doesn't' matter where it is. Then you apply the preset. You get a set of sliders on the layer to control the effect. Once the preset is applied the layer flys in from the left and bounces to a stop. Then just before the out point is reached the layer falls off the bottom of the comp. There are sliders to control the speed of the fly in, speed of the fly out, the amplitude of the bounce and frequency of the bounce. You can put it in a hundred layers and it doesn't show down anything. Take a look. It sounds like this preset which generates an expression and adds sliders could be the basis of any dynamic animation you want to set up. BTW, I have about 200 of these custom presets now that I've built up over the years. I sync them on all my machines through drop box. They save me hours and hours of time.