No, I don't think there's a way to get type info without reasoning. What you're doing here is called instance realization (in OWL/DL parlance -- computing all atomic classes for an individual or set of individuals), which is a core reasoning task.
For most queries sp:directType can't help performance. It obviously reduces the number of results, which could be important in some cases, but here it just means the reasoner has to do extra work filtering out indirect types.
For your query performance depends on 2 factors:
1) the number of individuals for which the reasoner needs to figure out types. That's why the pattern which binds the individual variable should be selective.
2) Size and complexity of your schema (ontology). We have some information on that in the docs [1].
Cheers,
Pavel