Functionality is non-trivial.
If purely staff functions, it will be ugly crutches. In your case there will be many extra tasks, inconvenience for users (where the matching lookup review to write, in a Tusk to push the failure and how to work automatically...).
As one of the options and implementation using ScriptRunner(Jython/plugin).
(Here is the sample code - https://github.com/mailru/jira-scripts)
To create a field user picker (multiple users) which specifies the users from whom you need approval. - "Matching"
To create a field user picker (multiple users) which will show the users who agreed. - "Agreed"
Then there is the status - Matching.
This status of the two transitions.
1. Approval -> approval
2. Agreement -> next status.
These transitions are hung kondishiny.
1. The user in the "Approver". The user in the field "Agreed on." Left more 1 negotiation.
2. The user in the "Approver". The user in the field "Agreed on." There is only 1 approval.
And on these hung the transitions post function: to add user in the field "Agreed on."
For the convenience of matching(depending on how they are configured dashboards) can users from the field "Matching" to add to the observers (using the listener to create/edit or through the post function).