I got some help from Julio and Delfi on Newton forum.
Problems with rolling objects, bouncing from edges can be solved by greatly increasing NewtonUpdate call frequency. So if the problem of GS is that it doesn't allow you to call a function in a while loop more often than once per frame, you can use a for loop in that while loop, which slices the current (time_frame / 16) into time intervals (subDt) so little, that when calling NewtonUpdate as many times as the count of slices, you get the necessary NewtonUpdate call frequency. Of course, you also you have to pass NewtonUpdate the correct sub delta time.

Here's the code, adapted to your wrapper, for super precision required in simulations:
Code:
void newton_update()
{
  var newtonFPS = 1000;
  if ((newton_running) && (nworld!=0))
  {
			
  float dt = time_frame / 16;
  var vratio = (dt * newtonFPS);
  var n = integer(vratio) + 1;
  float subDt = dt / n;
  int i;
  for ( i = 0; i < n; i++ )
    NewtonUpdate(nworld, subDt);
    //  proc_mode = PROC_LATE;	
  }	
}



You could pass the desired Newton FPS with newton_start() for example.


Another problem is that while boosting Newton FPS to solve bouncing on edges problem solves it in case of models, it doesn't work for blocks. What do you suspect? Vertices set not precisely enough maybe?
I'll investigate this myself after I fully integrate Newton into my game. Finally I have at least one firm solution. Thanks so far.