So, not sure if that was really it, but I had to move
model = loader.loadToVAO(vertices)
into my update method after I create a GLContext.
The reason is simple; you cannot use LWJGL's OpenGL bindings before GLContext.createFromCurrent(). Even if there is a context current in the current thread (after glfwMakeContextCurrent), you must let LWJGL know so that function pointers can be initialized, etc. It is not done automatically for you, because a) it's an expensive operation and b) you may want to reuse GLContext instances in some situations.
After I dumped my newbie code here, I was always searching at the wrong components, blaming other parts of my system to be faulty. Although it's still not very nice that it crashes instead of throwing an exception stating that the opengl context is missing, which it does in other cases.
I had another look at your code and decided to download Scala and try it out. Another bug I found was the order of calls in your render loop. You're effectively rendering your model, then calling glClear, then glfwSwapBuffers, which means you're always going to get an empty framebuffer.
The model still isn't rendered after fixing that. I'm not getting any OpenGL errors, but you're not setting glViewport or the PROJECT/MODELVIEW matrices, so your model is probably not visible using the default settings.
I also didn't get any crashes, but I tested on Windows + Oracle JDK. It would be great if you could write a simpler test (preferably in Java) that reproduces the crash.