I’ll answer question #2 first. The answer is much simpler. Using the same assumptions you made for #1 (i.e. fully hosted domain on Dreamhost, using the standard DreamHost nameservers: ns1.dreamhost.com, ns2.dreamhost.com, ns3.dreamhost.com).
Navigate to “Manage Domains” in the panel. Find the listing for your “fully hosted” domain and click the “DNS” link just below the domain name. On the next page scroll down to the section titled “Add a custom DNS record to mydomainname”. Fill in the name of the new subdomain in the first blank. Leave the type drop-down on type “A”. Enter the IP address in the value blanks. Enter a comment if you desire. Click “Add Record Now”
If you used a brand new name for the subdomain, there should be very little delay for the new record to start working. If on the other hand you reused a subdomain name that you have been playing with, there could be a DNS propagation delay of 12-24 hours usually.
Dreamhost also has a few DNS related API commands http://wiki.dreamhost.com/API/Dns_commands that you could use to delete and add a new record from outside the panel.
— now back to question#1
To start with if you want to use zoneedit, those assumptions you made don’t apply, because the first thing you need to do is change your nameservers to the names supplied to you within your zoneedit account.
You will also need to enter and manage ALL of the DNS records for the domain manually on the zoneedit side, as the automation of the panel can no longer help you.
The better easier approach is don’t use zoneedit. If you need to have an external process update a frequently changing external to dreamhost IP address is to create a simple script to run on a local machine that will monitor the IP and utilize dreamhosts API to remove the old record and add a new record via the API should the IP change.