I think I've stumbled upon the culprite. The ncRead.vi, when it sees that it has CAN packets in its buffer, causes another .vi to run which gets the data from the buffer, and puts it into an array. This array than is displayed into an actual array container on the front panel.
By simply cutting the connection between the array shift register and the array display, I have gotten rid of most of the undeterminism while under Real Time! I also have a global vi. which was run as embedded. By changing it to normal (no embedded), the entire program actually got worse as far as speed is concerned. I then mistakenly closed the front panel of the vi, and my determinism improved drastically.
And, taking some advice I read beforehand, I made any arrays or "concatenate string" functions within my program, have an initialized array before hand, to reduce memory issues.
All three of these have made my program very stable, a bit faster, and deterministic. The program still runs 30% faster on my 2.8ghz laptop. could be the 1.3ghz PXI system can only do so much...