For the first question, make a variable called "canJump", and make it so that when the player is overlapping the floor at an offset, this variable is 10 (this number can be changed later).
Then, if he is not overlapping the floor and "canJump" is greater than 0, make it subtract 1, so it will go back to 0 very fast when it is not on the floor.
Now the jump event will require this variable to be greater than 0. This means you can jump even if you just left the floor or because of fast moving or bouncing a little.
With this you can remove the need of the variable "jump" you are using, and make the first event (the 'space is down') work only when "canJump" is 0, which means the player is already jumping or falling
For the second one, increase the gravity and the impulse you are giving you object. This will depend on your object's density, so play around with it.
In an old project of mine, a gravity of 50 and an impulse of 8 is enough for a very fast jump.