Just a quick heads up here. It's fairly common practise using many sample libs to leave a tiny gap between notes, to avoid precisely this kind of scenario. A note off may be sent, but some samples use the note off to trigger a release, and the note may have in fact not ended, as one would assume sending a notes off message. ( A long standing discussion in the world of sample lib fulltime users, which can be....enthusiastic)
The tiny gap between notes is a common user workflow fix for this, and the size of the tiny gap varies between sample libs, as to how they respond. (it basically ensures the note off is occurring before the note on arrives.)
I don't use Qtractor (using openoctave here), but if you have a ability to have that tiny gap between notes, with binding actions, or if you're precise enough with a mouse to vary the length of the note, then test this with your libs, and the problem may go away, or at least diminish. In openoctave, Chris built a set of actions to cope with this particular scenario, and it works well, more importantly, it doesn't slow down the flow of use and edit. And this set of bindings helps with VSL, Sonic Implants, MV, and a couple of others we've tested with. (Between us, we own these libs at least.)
Generically, most midi work benefits from having a gap between notes, and for string legatos built manually in particular. The instinct will be to overlap legato notes in strings, but with modern libs, the converse is true. The tiny gap allows the note to finish correctly, but the release component or "tail" of the note/gig will still sound into silence.
As always, your ears are the best judge of what you need to do to make this as human sounding as possible. You might find the gap can be a bit wider and still get the desired result.
If you're using sample lib constructed legato sequences (some libs do this), then as small a gap as possible may still give the desired result of correct note on/offs, and still "sound" correct. Experimentation is naturally encouraged.

To give a direct comparison as an example, at 120 bpm 4/4, the gap may be the equivalent of 1/128, and be sufficient for a note off to trigger correctly, and the following note on to do the same.
It's often a good idea, based on my experience, to ensure, in a list editor (i don't know if Qtractor has one of these) that any midi data occurs in the correct time sequence. Having program changes, for example, with exactly the same point in the timeline as a note, can occasionally produce strange results, and the same is true for notes on/off with exactly the same time position. A quick edit in a list editor, to ensure the program change occurs just before the note is time well spent, and ensures correct playback. (and you'd be surprised how much of a difference this simple check makes, eliminating a lot of frustrating backtracking later)
If Qtractor doesn't have bindings for changing the length of notes by a "really tiny" bit, then i respectfully suggest you send an FR to Rui, the Qtractor developer. He's open to suggestions (and has been since i've known him) and provided you make a good case for the FR (which is fair), he is more likely to at least consider your worthy suggestion.
There may indeed be a bug in linuxsampler, but based on past experience, it could be more likely on the sequencer end, and/or alsa midi. (and as a linuxaudio dev told me some time ago, jack midi is sample accurate, and timestamps all midi data, alsa midi just processes whatever's thrown at it. That means if midi data occupies the exact moment in the timeline, then either one could be used. A few of use experimented with this some time ago, and indeed found the alsa midi "queuing" to be, at times, wayward. Rui's the real expert here, so maybe he can chip in with some added info to help debug this.) I've had the same challenges using commercial sequencers, and had to use the above workaround as a result.
The notes you're using, i assume, are 100% in length, as occupying the complete space between time events, i.e., grid lines. Maybe Rui would consider (as an addition to your Feature Request) to add a "99%" action, that when applied to a note, makes it 99% long, including re-adjusting the position of the note off message. So you'd do your inputting, be it live or step input, then select the note, and hit the "99% action", and it auto-adjusts the note length and note off position accordingly.
I write all this as a fulltime user over many years experience, with a variety of different sequencers. You may know much of this already, if so, i wish no offence, or seek to belittle you in any way, with what may seem like obvious info. There may be others reading this who don't have this knowledge just yet, and are seeking a solution to the same challenge.
Good Luck,
Alex.