While OAEP uses a one-way function on the plaintext, it's not quite a hash: it's called a mask generation function (MGF), and unlike a hash it can produce as much or as little output as you want (the output length is an argument to the function, and input length is decoupled from output length). This output should be pseudorandom.
You use this in a construction called a Feistel network. To pad a message to length $k$ (so you're ultimately passing $k$ bits through textbook RSA), you create two blocks. One of them (the seed $S$) is a short fixed-length random string; the other (the data block $D$) is longer, and includes the message and some more conventional padding (details aren't important) to make it so the two blocks have a combined length of $k$.
Once you have these blocks, it's time to use your MGF. You first run MGF on $S$ to get a mask as long as $D$; you XOR that mask with $D$ to get $D^\prime$. You then run MGF on $D^\prime$ to get a mask as long as $S$, and XOR that with $S$ to get $S^\prime$. Concatenate $D^\prime$ and $S^\prime$ to get the thing you pass through RSA.
On the other end, you decrypt to get $D^\prime$ and $S^\prime$. You first recover $S$ by computing $MGF(D^\prime)$ and XORing with $S^\prime$ (this is exactly what you did to get $S^\prime$; it works just as well in reverse). Once you have $S$, you XOR $D^\prime$ with $MGF(S)$ to get $D$, and once you have $D$ you take off the normal padding to get the message.
Feistel networks are generally a good way to turn a one-way function into a reversible function. In general, you divide the thing you're processing into two blocks, $A_1$ and $B_1$ (these have fixed length). You then compute $A_{i+1}=A_i\oplus f(B_i)$ and $B_{i+1}=B_i\oplus f(A_{i+1})$, and repeat till you have $A_n,B_n$ as your output. To reverse it, you compute $B_{i-1}=B_i\oplus f(A_i)$ and $A_{i-1}=A_i\oplus f(B_{i-1})$, and repeat until you have $A_1,B_1$ again. This construction is used in several block ciphers; there, $f$ also takes a subkey as input, so without the subkey you can't reverse the network. It's especially nice in hardware; a Feistel network means encryption and decryption are almost identical (you basically just reverse the order of the subkeys).