A private key is simply a 32-byte (approx.) long integer. A public key is a point on the curve-- it is found by taking the point G multiplied by the private key (via the double & add method, or some other).
No, it is the exponential of the private key.
publickey=basevalue^privatekey
The discrete logarithm is hard in many groups, but, as far as I know, division is easy (division is different from factoring, to divide, you need the product and one factor, factoring is deducing both factors from just the product, which is much harder).
The address is the hash of the public key.
Also, you don't need the double and add to multiply, you can use school multiplication (O(n^2)) or the Karatsuba algorithm (O(n^log
2(3))).
The related square-and-multiply method is used for fast exponentiation.