Лучше всего просто повернуть BufferedImage, прежде чем выбросить его в TexturePaint.
AffineTransform texture = new AffineTransform();
texture.rotate(radians, bufferedImage.getWidth()/2, bufferedImage.getHeight()/2);
AffineTransformOp op = new AffineTransformOp(texture, AffineTransformOp.TYPE_BILINEAR);
bufferedImage = op.filter(bufferedImage, null);
Вы должны иметь возможность создавать подклассы TexturePaint, не получая снижения производительности, я могу только предположить, что ваш код поворота вызывает падение.
Надеюсь, это поможет.