Separate hintShown and hintUsed events

This causes the leavesAvailable number to be consistently decreased
before the request is sent instead of having a race-condition-esque
thing with the two event handlers.

Auditors: ben