In relation to #2 and #3, I think you underestimate how hard it is to get a p2p connection. It's very hard, and sometimes impossible, which is why a TURN server will often fallback to simply relaying data, in which case someone running the server has to pay for the bandwidth. Thus, you need to pay for a TURN server if you want to run a p2p service (or make users relay the data, like Skype does).
In relation to #4, you want the encryption to be done by the browser. Encryption is very hard to do right. You're crazy if you think you'll implement it correctly by yourself in JS.