Generally you won't get stuck with F#, unless you would of got stuck with C# also. The escape hatch is there, with its pros/cons. The pro is mentioned - the con being that this is where F# gets im-pure and someone with experience would immediately have patterns/team standards to deal with the boundary/usage. C# libraries generally don't have this problem (e.g. Collections, Connection Libs/SDK's, etc) since you invoke them like any other function/object - C# frameworks which invoke your code (e.g. ASP NET Core) you typically need standard code patterns to allow most of your F# code to remain pure/simple.
In general though I prefer the .NET runtime than the JVM in its current state - you can go a little bit lower level when required in hot code without going unsafe (value types, spans, etc).