Based on your description and analysis, it seems that the freeze in your application is not caused by excessive object allocation or garbage collection. Since the threads are spending a lot of time in JIT_New and JIT_NewArr1, it is possible that the freeze is caused by just-in-time (JIT) compilation of new code during the user input processing.
In .NET, code is compiled by the JIT compiler on demand when it is executed for the first time. This compilation can take some time and consume CPU resources, especially if the code being compiled is complex or lengthy. Since you mentioned that the freeze is triggered by generating a lot of user input, it is possible that the JIT compiler is being overwhelmed by the amount of new code that needs to be compiled.
One possible solution to this issue is to pre-compile the code using the Native Image Generator (Ngen.exe) tool. Ngen.exe generates native images of .NET assemblies, which can improve application startup time and reduce CPU usage during JIT compilation. However, this approach may require additional development and testing effort, and may not be feasible in all scenarios.
Another approach is to optimize the code that is causing the freeze, by reducing its complexity, improving its performance, or using caching or memoization techniques to avoid repetitive calculations. This may require profiling and analysis of the code, as well as careful testing to ensure that the optimizations do not introduce new bugs or performance issues.
Finally, it may be helpful to investigate the network timeout exceptions that occur after the freeze is over, as these may be related to the root cause of the issue. It may be possible to improve the network performance or optimize the way the application handles network requests to avoid these exceptions and improve overall application performance.