While I haven't used F# much, as a professional OCaml and Scala dev, Scala is hands down the more powerful language. OCaml isn't bad, but it leaves a lot to be desired.
A little offtopic, but if OCaml got rid of its module system, added type classes, polymorphic functions, higher-kinded types, multi-core support and removed objects (not that it matters that much), it would be my dream language.
Basically, I want Haskell without the dogma. Though, I guess that's what unsafePerformIO provides!
Not to mention it has subtype polymorphism on par with what you get in C# that you can really get a lot of mileage from (and which gets too easily glossed over by some FP neophytes), AND an extensive reflection API to bridge the gap if you have nothing else to fall back to.
Your dream language sounds a lot more like F# than Scala tbh.
F# doesn't have (easy to use) type classes or higher kinded types, but has simplified modules and full access to .NET object system for all your polymorphism needs, and a much more seamless interop with the platform it's running on as there's significantly less "magic" happening in the compiler compared to Scala.