Let's see how C# compares to the author's wishlist.
"obvious, non-negotiable things any new OO language should have":
> No nulls
C# has null. It looks like after C# 8.0 there is a way to require annotating types are nullable. But it isn't as elegant as a true Option type, and looks like there may still be some gotchas.
> No unsafe cast
It isn't entirely clear what is meant by "unsafe", but casts in C# can throw an exception if the type doesn't match at runtime, which I suspect fails to meat the criteria here.
> Optional named arguments
C# has this
> Generics
C# has generics, and while I don't have a whole lot of experience with it, it seems pretty good.
> Immutability by default
Fields and variables in C# are mutable by default (but can be marked as immutable with `readonly`).
"less obvious choices":
> Class based discoverability
I think C# has this
> Multiple inheritance
C# does not have multiple inheritance. However default interface methods give some of the benefits.
> Minimal syntax
I'm not entirely sure what is meant by this, but from the comparison with scala, I think C# satisfies this.
> Higher kinded types
AFAICT, C# does not currently have Higher kinded types
> No Exceptions
C# definitely has exceptions
> Unified classes and Typeclasses
C# doesn't have an equivalent of typeclasses. In part because of the absence of higher kinded types (see above).
> Pattern matching without destructuring
C# switch statements do this.
So, C# has some of what the author is looking for, but is also missing a lot. Yes, C# did take some inspiration from functional languages. Yes it did learn from some of the mistakes of earlier OO languages (notably Java). But C# is itself over a decade old and constrained by backwards compatibility. If it had been created today, would probably be substantially different.
Disclaimer: I haven't used C# very much, so this is mostly from what I remember when I learned C# years ago, and what I was able to find with simple searches online.