Reimplement circuit_get_by_rend_token_and_purpose with an associative array
circuit_get_by_rend_token_and_purpose showed up in mo's profile on #7727 (moved). It was only 3% of overall runtime, but that's still more than we ought to be burning on a dumb linear search.