Yeah you probably want to have an offset based on the screen or player position in your drawing methods so you can cancel out the difference and have things remain visible.
1). The tiles move WITH the screen. It does what it's supposed to do, because the screen position changes, so should the tiles used to represent the new position of the screen:
[SOLUTION]: If we want the visible screen/canvas to stay in place, we simply alter the horizontal and vertical offsets to cancel out the screens x and y position.[size=8pt]( that we're already familiar with from the OP )[/size]. I.e: horOffset = -screen.xPosition(); verOffset = -screen.yPosition();
So our paint method would look something like this
int horOff = screen.xPosition();
int verOff = screen.yPosition();
drawImage(sprite, isoX() - horOff,
isoY() - verOff, null);