...
Periodically B, C and D are presented with a challenge from A, if they provide the correct solution, they are honest. You can classify this as a POW, and it makes up the 1st part of resource expenditure.
...
Maybe this falls into the category of information you don't want to be public yet but I'll ask anyway.
Could you go into more detail on what such challanges might look like ? To me - obviously no expert in any sense of the word - it would seem difficult to make sure nodes aren't acting good-natured when answering challenges while acting evil when it comes to forming consensus.
The challenges are fairly simple and are to ensure that nodes have the data they claim, and are providing the service they claim to in an honest manner.
For example, if node D was advertising that he was acting as a ledger resource, nodes don't have any real way to know if the ledger information he is serving up is legit, they wont know if its valid until they receive it.
This isn't a huge problem, as the act of node D sending out incorrect ledger information is more of a hindrance (it wont validate so requesting nodes have to go elsewhere) than anything else, but we want to limit the endorsement of dishonest nodes as much as possible.
Basically, A would present a challenge to D requesting some information that is public, and only if D was doing the job he claims would he have that information and provide the correct solution.
It could be something as mundane as sending the merkle root hash for all transactions on the 25th December 2015. If D is providing a ledger service, he should have that information and be able to provide the hash. A then compares D's solution to his, if they match D is likely honest.
D will never know directly if he sent the correct solution to A, at best he can guess that he did if he gets an endorsement soon after.