You are correct that it won't work without a subsequent repair install or as Microsoft calls it, "in-place upgrade". The best solution for mixed hardware environments is a different process than simple ghosting.
First, integrate all the drivers you might need, as well as patches and Windows customizations into a custom unattended installation CD. You can do that using nLite or the official Microsoft methods (nLite is easier). All you need to do then is boot from the CD and in a short while you will have a clean baseline Windows installation with the right drivers and settings.
That leaves applications, for which you will want to create unattended installation packages. Details will vary depending on each application, but nearly all can be installed unattended with some effort.
appdeploy.com is a great resource. If you use Active Directory, you can then deploy the packages using Group Policy, if you don't you can run a script that goes through and installs everything you need.
Preparing a machine this way takes longer than ghosting, but if you set your environment up well initially, it doesn't take any more of your time. You just start it and let it run. Learning unattended deployment is a worthwhile time investment. It will also save you time on application upgrades and deployment between re-imaging.
If you have Active Directory, you may also want to look into SCCM and WSUS.