As Travis pointed out this is a tricky question, and one that really depends on defining what useful work actually is - but that's more of an academic question.
I think that the way this is likely calculated is the percentage of total CPU cycles run in user space that is not spent in idling. As long as the program goes to sleep while waiting for certain resources, it shouldn't consume CPU.
If it can't do this for some reason top does tell you the percentage of time spent specifically waiting for IO as %wa.
Short answer: %us of 100% probably includes some busywork, but the exact amount will depend on the type of processor you have, the type of software you're running and a dozen other factors. To get the full story of exactly what top is telling you, you'd probably need to go to the source code (which thankfully, is freely available).