`let` symbol created by template is reused in `nimvm` branch 
### Description

Found the issue when trying to use `httpx`, reduced it down to
```nim
template bar(): bool =
  let hello = true
  hello

template foo*(val: bool): bool =
  when nimvm:
    val
  else:
    val

proc test() = # Doesn't fail when top level
  # Original code is calling `unlikely` which has a `nimvm` branch
  discard foo(bar())
```

Seems related to https://github.com/nim-lang/Nim/issues/23687?

### Nim Version

Nim Compiler Version 2.2.1 [Linux: amd64]
Compiled at 2024-11-24
Copyright (c) 2006-2024 by Andreas Rumpf

git hash: 2df633180a4d1278fc5a48b418e603f694640d4e
active boot switches: -d:release


### Current Output

```text
test.nim(2, 7) Error: 'hello`gensym0' cannot be assigned to
```


### Expected Output

```text
No error, httpx used to work
```


### Known Workarounds

Can just store the template return value in a temp variable

### Additional Information

_No response_