### Summary

Starting with ansible-core-2.11.0, the `ssh` module operates with a `retry` setting of `3`.

This has undesired impact when using a `sudo` password and making a typo in the password: the module would make 4 connection attempts, attempting a sudo in each connection attempt.

On hosts that report failed sudo attempts via email - this generates 4 emails per Ansible run per host - 4x increase from behaviour with previous version.

I have tracked this to commit 935528e22e5, which changed how the ssh module gets its settings - using `get_option` instead of the ConfigurationManager.

I have worked around this by explicitly setting `retries` on the first task in the playbook - but this is just a workaround.

I hope there would still be a way to set retries for the SSH module (or make it not retry on failed privilege escalation).

Cheers,
Vlad

### Issue Type

Bug Report

### Component Name

ssh

### Ansible Version

```console
ansible [core 2.11.2]
  config file = /Users/vlad/reannz/code/ansible-playbooks/ansible.cfg
  configured module search path = ['/Users/vlad/reannz/code/ansible-playbooks/library']
  ansible python module location = /usr/local/Cellar/ansible/4.1.0/libexec/lib/python3.9/site-packages/ansible
  ansible collection location = /Users/vlad/.ansible/collections:/opt/ansible/collections
  executable location = /usr/local/bin/ansible
  python version = 3.9.5 (default, May  4 2021, 03:29:30) [Clang 11.0.0 (clang-1100.0.33.17)]
  jinja version = 3.0.1
  libyaml = True
```


### Configuration

```console
DEFAULT_BECOME(/Users/vlad/reannz/code/ansible-playbooks/ansible.cfg) = True
DEFAULT_BECOME_ASK_PASS(/Users/vlad/reannz/code/ansible-playbooks/ansible.cfg) = False
DEFAULT_BECOME_METHOD(/Users/vlad/reannz/code/ansible-playbooks/ansible.cfg) = sudo
DEFAULT_BECOME_USER(/Users/vlad/reannz/code/ansible-playbooks/ansible.cfg) = root
DEFAULT_HOST_LIST(/Users/vlad/reannz/code/ansible-playbooks/ansible.cfg) = ['/Users/vlad/reannz/code/ansible-playbooks/environment/production']
```


### OS / Environment

Controller: OSX Mojave 10.14.6
Target: Ubuntu 20.04

### Steps to Reproduce

<!--- Paste example playbooks or commands between quotes below -->
```ini
# ansible.cfg
[privilege_escalation]
become=True
become_method=sudo
become_user=root
become_ask_pass=False
```
Run:
```
ansible -u $USER -m command -a 'id' 'target-host' -K
```


### Expected Results

I expect sudo attempted only once.

### Actual Results

```console
Sudo is attempted 4 times (as per `/var/log/auth.log` on target host)
```


### Code of Conduct

- [X] I agree to follow the Ansible Code of Conduct
'''
        Takes a command array and scans it for ControlPersist and ControlPath
        settings and returns two booleans indicating whether either was found.
        This could be smarter, e.g. returning false if ControlPersist is 'no',
        but for now we do it simple way.
        '''
        controlpersist = False
        controlpath = False
        for b_arg in (a.lower() for a in b_command):
            if b'controlpersist' in b_arg:
                controlpersist = True
            elif b'controlpath' in b_arg:
                controlpath = True
        return controlpersist, controlpath
    def _add_args(self, b_command, b_args, explanation):
        """
        Adds arguments to the ssh command and displays a caller-supplied explanation of why.
        :arg b_command: A list containing the command to add the new arguments to.
            This list will be modified by this method.
        :arg b_args: An iterable of new arguments to add.  This iterable is used
            more than once so it must be persistent (ie: a list is okay but a
            StringIO would not)
        :arg explanation: A text string containing explaining why the arguments
            were added.  It will be displayed with a high enough verbosity.
        .. note:: This function does its work via side-effect.  The b_command list has the new arguments appended.
        """
        display.vvvvv(u'SSH: %s: (%s)' % (explanation, ')('.join(to_text(a) for a in b_args)), host=self.host)
        b_command += b_args
    def _build_command(self, binary, subsystem, *other_args):