Can't access generic parameters in a generic alias that don't appear in aliased type
### Nim Version

Nim Compiler Version 2.3.1 [Linux: amd64]
Compiled at 2025-02-28
Copyright (c) 2006-2025 by Andreas Rumpf

git hash: 7e8a650729e9434574c46350aece7609e5465253
active boot switches: -d:release


### Description

When accessing a generic field from a generic alias it only allows accessing what it aliases.
```nim
import std/options

type
  Foo[D: static int; T] = T
  Bar[D] = Option[D]
  Bizz = Foo[9, string]
  Buzz = Foo[9, Option[string]]

echo Bar[string].D # undeclared field: 'D'
echo Bizz.D # 9
echo Buzz.D # undeclared field: 'D'
```
The `Foo` example is a bit more useful since it allows you to attach metadata to types without needing to resort to macros. 


### Current Output

```text
test.nim(9, 17) Error: undeclared field: 'D'
test.nim(11, 10) Error: undeclared field: 'D'
```

### Expected Output

```text
string
9
9
```

### Known Workarounds

_No response_

### Additional Information

I've tracked the issue down to when it calls [readTypeParameter](https://github.com/nim-lang/Nim/blob/1d3260757502694a16f424212e93601b014207bf/compiler/semexprs.nim#L1391) it just [skips past the alias if both are generics](https://github.com/nim-lang/Nim/blob/1d3260757502694a16f424212e93601b014207bf/compiler/types.nim#L1207) and so the fields on the alias cant be accessed (unless they share the same name)