If you haven’t already, make sure you use the OpenGL flags to allow hardware acceleration, which you are trying to do. You can enable the flags with VM arguments or programmically by using:
System.setProperty("sun.java2d.opengl","True");
Make sure to put this before any rendering code, preferably before you enter the Swing EDT.
I haven’t read all of your code, but I noticed a few things whilst scanning through, in RenderingManager.java your getImage method does not dispose of the graphics object here:
image.getGraphics().drawImage(bimg, 0, 0, null);
Without disposing the graphics object the image will not be hardware accelerated, because for images to be accelerated their rasters must be encapsulated to prevent modification when the pipeline converts it into a VolatileImage. Simply create a local variable of the image graphics, do your drawing, and dispose.
Also, you will get better performance if you edit your code to allow you to specify the image transparency, you currently have it on Bit-mask only, if your background is opaque, it is worthwhile to use the OPAQUE setting instead. Incase it makes it any easier, the constant values are: 1 = OPAQUE, 2 = BITMASK, 3 = TRANSLUCENT.
Lastly some things that you might consider doing is using the RenderingHints for Graphics2D, here is an article by Oracle explaining the process. https://docs.oracle.com/javase/tutorial/2d/advanced/quality.html
I don’t have time to look over all of your code right now, but if you are still having issues with Java2D performance after trying my suggestions then please don’t hesitate to PM me.
Good Luck.
EDIT: I would take a look at your game loop, Thread.sleep() isn’t accurate or reliable, I find Thread.yield() gives smoother result; additionally you might experience non-smooth game play since you aren’t capping your FPS, VSync would require Fullscreen Exclusive mode, however creating a manual cap to the current GraphicDevice Refresh Rate makes it smoother in my experience, you will have to see what works for you.