I seem to have it working. I modified acs-subsite tcl procs so that it has a mechanism for packages to register themselves as subsites; which means subsite::get and [ad_conn subsite_id] will return more than packages with a package key value of acs-subsite.
I copied the subsite parameters I needed from the acs-subsite.info file and added 'after-install' and 'before-uninstall' callbacks which register my package as a subsite. I also added 'after-mount' and 'before-uninstantiate' package callbacks which create an application group for my package - mirroring acs-subsite.
I swapped my package on to the root of the site and it just worked. I guess I never realised that using a different package on the root of the site would be so trouble free...