So how about the following proposal.
1) As a fallback, stick to the established way of naming devices in
order to allow for bootstrapping a new system and in order to keep
backward compatibility for systems that do not care about advanced
device assignment.
2) At boot time, allow for arbitrarily shuffling device
identifiers. If you do not care about reassigning your root device,
this can be done first thing after init starts. If you want to
reassign your root device, do it in /linuxrc and use a
pre-initialized ramdisk image.
Come to think of it, most of this could probably already be done in
userspace, by dynamically creating devices at boot time. All that
needs to be done is writing a small program that scans /proc/scsi,
reads a configuration file and then creates new devices in /dev.
This looks so simple, I am sure I have probably missed some obvious
problem ;-/
Markus