Do I need to use the Due Scheduler library?

During this 6ms I am using pulseIn to count how long a pin is HIGH, so the CPU is blocked (I believe so).

You could use an interrupt to trigger when the pin goes low, and then check the value of millis() if you need to know how long the pin was high.