Does Serial.write() block

If you use the analog inputs of the Arduino, you get a integer (two byte) value for a reading. At 9600 baud, it takes roughly 2 milliseconds to transmit those two bytes. At 115200 baud, it will take roughly 200 microseconds. You can do the calculations for other baudrates; once you get under 100 microseconds, there will be no risk of choking due to the buffer filling up.

If you go the text route, sending the integer value as text can be up to 4 bytes (and possibly a CR or LF). But you asked about Serial.write and not Serial.print; Serial.write should be OK.

Now the question is for how long you want to sample; if you only take e.g. 10 samples at 100 microsecond interval, that will only be 20 bytes. If you want to sample forever, your only way out is high baudrates or a different means of transport of the data.

Lastly, I suspect that you're very close to the limits of an AVR based Arduino (Uno, Mega etc) if you sue the analog inputs; one analogRead takes approximately 100 microseconds.

PS
You can indeed use AvailableForWrite to stop the sampling if there is not enough space in the buffer.