Some of your migration points are fairly easy, others are not. I fear that, depending on just how "custom" your "DLLs of custom web apps" are, you may be in for a lot of manual migration.
Metabase import/export is fairly straightforward. You could parse the Metabase (since it's just XML) and locate any referenced ISAPI DLLs and migrate them over, as well. Likewise, you should be able to parse the Metabase to locate any content files that need to be migrated and ROBOCOPY / XCOPY them over. (Migrating ACLs between non-domain members is a non-trivial operation, though.)
Copying user accounts and groups between non-domain member servers can be done via script.
Moving SQL Server databases is pretty easy. Detach / move / Attach... lather, rinse, repeat. If you have a lot of them you could write some TSQL to help automate the process.
When you get into custom software, though, all bets are off. If you even know where that software is storing its configuration data you're probably stuck writing one-off scripts to migrate and alter the configuration. Be wary of ugly things like hard-coded database locations, IP addresses, etc.
Moving forward, this kind of thing is a good reason to have fairly rigorous documentation / change control procedures. The next time you have to do this you'll be happy to have those kind of docs.
There's the other argument that says "You should just be running all this on virtual machines." You could always try to do a P2V of your "Server B" machine, however you need to be aware of the potential operating system and/or application licensing concerns that could arise.