The first thing you have to realize is: It is mathematically impossible to do perfect time-stretching. Every time-stretching algorithm has strengths and weaknesses. For example PaulStretch (the one herodotas linked) is awesome for stretching samples by big factors (e.g. making it 10x slower) but it doesn't really work that well for small amounts, which I think you are after. Every time-stretching algorithm has some sorts of artifacts, and this is why samplers generally don't do time-stretching. Time-stretching cannot substitute for proper multi-sampling because for example if you play a note on a piano and then play the same note one octave up, it's not just the duration of the note that changes - the timbre itself changes, and that is something that time-stretching cannot do.
Any professional sample-based synthesizer solves this problem by using multi-samples (which you can also do in OpenMPT), not by time-stretching.