Obviously, C# and a good part of the the .NET libraries are Microsoft's attempt to do a better Java, with Anders Hejlsberg leading the effort AND trying to fix some Java mistakes while he and his team were at it.
As far as I'm concerned that's just fine, competition is a good thing. Also note that this happened shortly before progress in the Java language became glacial and sometimes dysfunctional.
(Also note that Java was hardly original when it came out; being able to do that in a useful way has become exceedingly difficult now that we're in the 5th decade of high level language design. If you disagree, please point out say half a dozen things in Java that had never been seen before in the lab or industry.)
However note my comment "most especially the CLR [is a great idea]". This is where Microsoft can in theory win on the technology side of things. E.g. F#, their dialect of OCaml. Indeed it's "just copying what other folks are doing", but it is the first functional language with major vendor support, right?
You can do functional programming on the JVM with e.g. Scala and Clojure, but the JVM runtime is not exactly going to go out of its way to help you (that's actually scheduled for the upcoming new version of the JVM).
My bottom line is that focusing on C# rather misses the point when Microsoft from the very beginning made such an effort at a multi-language system.
Your points about vendor lock-in are of course well taken, although I'd say Microsoft's abandonment of backwards compatibility with VB6 -> VB.NET is a lot worse. There's a difference between the old "IBM will take care of you" and Microsoft's untrustworthiness if you play the game by their rules.