There was an extra acs_users_all assignee join in the first part of the query which caused the set of returned rows to be the cartesian product of the bugs X keywords X users on system = very very slow for anything more than a trivial number of users.
It still returns bugs x keywords rows which is not great but seems tolerable.