Even later edit
The question has moved a long way since I first answered it. originally, it appeared we had eliminated latency as the cause; now it seems not to be the case.
If you're playing to a 'drum machine', then I'd suggest something akin to what we used to do in the 80s - then because it was a fashionable sound, but it really does pull your timing into shape.
Set up a delay, playing between 2 - 5 repeats [the more repeats, the more accurate you need to be, so work your way up], at ⅛ or ¼ beat, depending on the speed of the track. Play something that doesn't generate a lot of clashing notes, as we're only looking at timing, not overall dexterity.
The idea is that the better you time it, the smarter the repeats will sound. The aim is to avoid 'fuzzy edges' to the timing of the repeats.
You play live over a constant drum part, bouncing the echo by adjusting your timing until it just about vanishes behind the next note you play. If you do this on a synth you can adjust until you actually start to phase against yourself [the whole 80s vibe] but on a live instrument you just have to reduce the attacks to shorter than an audible flam. It's a "feel" excercise.
Late edit - & some reasoning as to why you might be struggling with the feel
The audio samples weren't available at the time of this answer, & I hadn't considered we might be talking about a shuffle/swing/triplet timing.
I feel the shuffle of the drum track is actually too rigid a triplet than the track really requires, and a drummer wouldn't play it that way. It would relax a bit. As it stands the kick just before the 3 feels late, which makes the snare on 3 feel early. I think this upsets the whole groove & could be one reason you're rushing. When the kick itself is playing triplets, then because they're perfectly even it makes it feel like they're dragging, so that again upsets the next 1.
Putting a straight 4s click track over it might help - though I'd be more inclined to fix the drum track feel, as this is going to affect the groove of the entire piece right the way through to the final mix.
Depending on which DAW you're using, one idea might be to re-quantise the drum groove more towards what the bass is playing. That might just fix it all.
If you were to try the exercise above, I'd do it on straight 8s rather than a swing of any sort, at least to start with. Make sure you can nail that before moving on. I'd then test an actual triplet feel [which is kind of what the recording is, almost], before looking at 'real' shuffle or swing - because that's the one with the most human variation.
Anecdotally, when I started programming drums tracks way back in the early 80s, this type of triplet feel was almost impossible to achieve because the quantisation PPQ on drum machines wasn't fine enough to really make it groove. Lots of tricks were used to try bury that deficiency, including live percussion & played synth overdubs, rather than trying to get a sequencer to cope. Only by the mid 90s did we really start to have the tech to get these right. [I spent almost the entirety of the 90s doing this type of groove fix in thousands of commercial midi files & keyboard products' internal software. It became a bit of an OCD thing; my nickname throughout the company was Groove Monkey, which I was rather proud of ;)
In short - humans are absolutely abysmal at dividing by three, visually as well as sonically [this is proven fact not opinion, but so far off-topic I'll leave you to do your own research] which makes any triplet/swing feel very very subjective. Divide anything perfectly by three & humans think it's "wrong".