<!--- Verify first that your issue is not already reported on GitHub -->
<!--- Also test if the latest release and devel branch are affected too -->
<!--- Complete *all* sections as described, this form is processed automatically -->

##### SUMMARY

Two vmware modules uses `copy()` to duplicate an internal instance of a pyvmomi object. This to be able to modify the object during an iteration.

- https://github.com/ansible/ansible/blob/622a493ae03bd5e5cf517d336fc426e9d12208c7/lib/ansible/modules/cloud/vmware/vmware_guest.py#L788
- https://github.com/ansible/ansible/blob/622a493ae03bd5e5cf517d336fc426e9d12208c7/lib/ansible/modules/cloud/vmware/vmware_datastore_facts.py#L220

As explain here, https://github.com/ansible/ansible/pull/60196/files#r312643761 this is not the best approach and this may impact the performance.

##### ISSUE TYPE
- Bug Report

##### COMPONENT NAME

vmware

##### ANSIBLE VERSION
<!--- Paste verbatim output from "ansible --version" between quotes -->
```paste below
devel
```
self.module.fail_json(msg="Failed to parse disk size please review value"
                                              " provided using documentation.")
            else:
                param = [x for x in expected_disk_spec.keys() if x.startswith('size_')][0]
                unit = param.split('_')[-1].lower()
                expected = [x[1] for x in expected_disk_spec.items() if x[0].startswith('size_')][0]
                expected = int(expected)
            disk_units = dict(tb=3, gb=2, mb=1, kb=0)
            if unit in disk_units:
                unit = unit.lower()
                return expected * (1024 ** disk_units[unit])
            else:
                self.module.fail_json(msg="%s is not a supported unit for disk size."
                                          " Supported units are ['%s']." % (unit,
                                                                            "', '".join(disk_units.keys())))
        
        self.module.fail_json(
            msg="No size, size_kb, size_mb, size_gb or size_tb attribute found into disk configuration")
    def find_vmdk(self, vmdk_path):
        """
        Takes a vsphere datastore path in the format
            [datastore_name] path/to/file.vmdk
        Returns vsphere file object or raises RuntimeError
        """
        datastore_name, vmdk_fullpath, vmdk_filename, vmdk_folder = self.vmdk_disk_path_split(vmdk_path)
        datastore = self.cache.find_obj(self.content, [vim.Datastore], datastore_name)
        if datastore is None:
            self.module.fail_json(msg="Failed to find the datastore %s" % datastore_name)
        return self.find_vmdk_file(datastore, vmdk_fullpath, vmdk_filename, vmdk_folder)
    def add_existing_vmdk(self, vm_obj, expected_disk_spec, diskspec, scsi_ctl):