The answer was in the source code. The core of the isprop function is the hasProp subfunction, which first asks for metaclass data and then relies on a call to findobj. This will obviously be terribly slower than the other options.
I guess now the new question is: why is this implemented like this? But I don't suppose the answer to that question can be found here...