Would someone mind explaining what all this business about additive/multiplicative/compressed key solutions is.
It's a bit technical, but let's distill it down to the basics...
ECDSA keys are comprised of X and Y coordinate information. A compressed key is simply a shorter representation of the public key by discarding the Y coordinate and instead adding a small bit of information about the coordinates that allows a bit of code to work out the Y coordinate based on the X coordinate.
This is desirable because it keeps the size of the blockchain down a fair bit at the expense of a teensy bit more computation for any piece of software that has to actually deal with these calculations.
However, because Bitcoin addresses are based on the public key representation - rather than the public key information - such a compressed key yields a different address than a non-compressed key.
( For those wondering - yes, that means that for every address out there, there's another matching address. That's why private keys represented in a WIF format will have a bit of information for clients on whether the public key is uncompressed (WIF starts with a '5') or compressed (WIF starts with 'K' or 'L'), while for raw or incorrect imports you'll have to help the client along a bit by specifying it specifically. )
The additive and multiplicative bits are even more technical, you really would have to read up on the finer details, but suffice it to say that both yield the same results due to the way elliptic curve cryptography work with the exception that when using additive you can combine two public keys and get the desired address, while with multiplicative you can't. This doesn't really affect the end-result other than having to choose which combination to use to actually get the correct address - i.e. if it is multiplicative and you choose additive instead, you still get a valid Bitcoin address.. just not the one with the vanity.
Can't help you with the other one other than that I believe the steps are exactly as you mention with the modification that the base point is added as that still yields valid results and is faster than re-generating a new key for each test.