I have a 6mb file here which is loading around 1 minute.
If you'll share the file, it would be possible to reproduce scenario and see what happens.
what can be done (what can be checked) in such a case to improve the performance.
Reading ASCII file formats in general has penalty due to expensive text parsing. Moreover, it may considerably flow depending on compiler / STL implementation. If I recall correctly, we've seen a noticeable slowdown in some operations within VS2010 -> VS2013+ movement.
Is there is some specific reason for using ASCII format? You may use a binary persistence for TopoDS_Shape with help of BinTools::Write() / BinTools::Read().
is BRepTools::Read thread safe / reentrant?
It should be safe using BRepTools::Read() from different threads for different files, if that is what you asking. If you see experience problems here - then it should be a bug.