What is happening I think is that the mousemoves are causing mouse events too, and getmouseventstate is not enough to differentiate the two.
It is possible, though reeks of hackiness, but does seem to work on linux, today, with the sun shining, to test for dx and dy, and signal a mouseup if they're both 0:
while( Mouse.next() ) {
if( Mouse.getEventButtonState() ) {
System.out.println("mouse click" );
} else if( Mouse.getEventDX() == 0 && Mouse.getEventDY() == 0) {
System.out.println("mouse up" );
}
}