insertSnippet can put snippet selections in wrong positions
<!-- ⚠️⚠️ Do Not Delete This! bug_report_template ⚠️⚠️ -->
<!-- Please read our Rules of Conduct: https://opensource.microsoft.com/codeofconduct/ -->
<!-- 🕮 Read our guide about submitting issues: https://github.com/microsoft/vscode/wiki/Submitting-Bugs-and-Suggestions -->
<!-- 🔎 Search existing issues to avoid creating duplicates. -->
<!-- 🧪 Test using the latest Insiders build to see if your issue has already been fixed: https://code.visualstudio.com/insiders/ -->
<!-- 💡 Instead of creating your report here, use 'Report Issue' from the 'Help' menu in VS Code to pre-fill useful information. -->
<!-- 🔧 Launch with `code --disable-extensions` to check. -->
Does this issue occur when all extensions are disabled?: Yes

<!-- 🪓 If you answered No above, use 'Help: Start Extension Bisect' from Command Palette to try to identify the cause. -->
<!-- 📣 Issues caused by an extension need to be reported directly to the extension publisher. The 'Help > Report Issue' dialog can assist with this. -->
- VS Code Version: 1.66.0-insider (Universal) Commit: db0525ff4ba814780e901a5b9e399aaf596b9b20
- OS Version: macOS Big Sur 11.6

Steps to Reproduce:
I created a new extension to test this where I basically use a keybinding to trigger a command inserting a snippet.

Speed is of the essence in a lightweight environment/extension in order to reproduce this so that's why we need the keybinding.

```json
"contributes": {
	"commands": [
		{
			"command": "testextension.helloWorld",
			"title": "Hello World"
		}
	],
	"keybindings":[
		{
			"command": "testextension.helloWorld",
			"key": "ctrl+m"
		}
	]
}
```
```typescript
vscode.commands.registerCommand('testextension.helloWorld', async () => {
	const line = vscode.window.activeTextEditor?.document.lineAt(vscode.window.activeTextEditor?.selection.start);
	const snippet = new vscode.SnippetString("aProperty: aClass<${2:boolean}> = new aClass<${2:boolean}>();\n");
	// I believe, but am not sure, that it's important that the place to insert the snippet on differs from the cursor position.
	await vscode.window.activeTextEditor?.insertSnippet(snippet, new vscode.Position(line?.lineNumber! + 5, 4));	
});
```
in a new file containing
```
{
    text
    more text
    some more text
    even more text
    and some more
    additional
    text
}
```
putting the cursor after the first "text", pressing enter twice quickly followed by crtl+m puts the snippet cursors on "ean> = " and "ean>();" instead of "boolean" and "boolean"
insertSnippet can put snippet selections in wrong positions
<!-- ⚠️⚠️ Do Not Delete This! bug_report_template ⚠️⚠️ -->
<!-- Please read our Rules of Conduct: https://opensource.microsoft.com/codeofconduct/ -->
<!-- 🕮 Read our guide about submitting issues: https://github.com/microsoft/vscode/wiki/Submitting-Bugs-and-Suggestions -->
<!-- 🔎 Search existing issues to avoid creating duplicates. -->
<!-- 🧪 Test using the latest Insiders build to see if your issue has already been fixed: https://code.visualstudio.com/insiders/ -->
<!-- 💡 Instead of creating your report here, use 'Report Issue' from the 'Help' menu in VS Code to pre-fill useful information. -->
<!-- 🔧 Launch with `code --disable-extensions` to check. -->
Does this issue occur when all extensions are disabled?: Yes

<!-- 🪓 If you answered No above, use 'Help: Start Extension Bisect' from Command Palette to try to identify the cause. -->
<!-- 📣 Issues caused by an extension need to be reported directly to the extension publisher. The 'Help > Report Issue' dialog can assist with this. -->
- VS Code Version: 1.66.0-insider (Universal) Commit: db0525ff4ba814780e901a5b9e399aaf596b9b20
- OS Version: macOS Big Sur 11.6

Steps to Reproduce:
I created a new extension to test this where I basically use a keybinding to trigger a command inserting a snippet.

Speed is of the essence in a lightweight environment/extension in order to reproduce this so that's why we need the keybinding.

```json
"contributes": {
	"commands": [
		{
			"command": "testextension.helloWorld",
			"title": "Hello World"
		}
	],
	"keybindings":[
		{
			"command": "testextension.helloWorld",
			"key": "ctrl+m"
		}
	]
}
```
```typescript
vscode.commands.registerCommand('testextension.helloWorld', async () => {
	const line = vscode.window.activeTextEditor?.document.lineAt(vscode.window.activeTextEditor?.selection.start);
	const snippet = new vscode.SnippetString("aProperty: aClass<${2:boolean}> = new aClass<${2:boolean}>();\n");
	// I believe, but am not sure, that it's important that the place to insert the snippet on differs from the cursor position.
	await vscode.window.activeTextEditor?.insertSnippet(snippet, new vscode.Position(line?.lineNumber! + 5, 4));	
});
```
in a new file containing
```
{
    text
    more text
    some more text
    even more text
    and some more
    additional
    text
}
```
putting the cursor after the first "text", pressing enter twice quickly followed by crtl+m puts the snippet cursors on "ean> = " and "ean>();" instead of "boolean" and "boolean"