After experimenting more with this, it seems like with random generation the bottle neck is the "input generation" and not the hashing itself, that's why I went with sequential.
I replaced my nonce generation with a static string and my hashrate went to the moon, so I invested more time in optimizing my input generation.