what about simply using a WAV file in the sampler and using that as modulation source for those cases? Or set the step sequencer to a very low tempo and then divide the clock, and use the step output as envelope.
a possible option is a parameter which you can set in the envelope to change the length in seconds, and then the parameter values for the ADSR stages are relative to this number (so you can set 300s and then if the attack is 0.5 then it becomes 300x0.5=150). Obviously this might create a problem for people who have already made patches with certain envelope parameter values.
are you sure this is the case? did you turn off loop or not?
you should be able to trigger the envelope, and when you trigger it it starts at 0. If you trigger it and the envelope doesn’t seem to start at zero, it could be because you set the attack extremely short, making you think that it starts at a higher level, which is not the case.