Changing sample in phrase without retriggering envelope?

The envelope will indeed be retriggered -

but you could maintain the envelope position (Exx) manually when you program a phrase.

Or you could implement a macro which crossfades between multiple waveforms

(using this trick, you could even automate this from within the phrase itself…)