Have you considered perhaps looking at the datasheet
of a part once used to implement registers in a CPU,
such as the 74HC574 datasheet?
It works exactly as you suspected:
One register select bit (a pin named CLK) for WRITE that, on its rising edge, tells the chip to take the data on its input pins and store it internally.
A CPU that included lots of these chips would only clock the register(s) that need to store the value currently on the databus, and not clock the other registers that need to hold their internal values.
Another register select bit (a pin sometimes called "nOE") for READ that, as long as it is low, tells the chip to drive its internal data out on the data bus.
Register files inside a FPGA are conceptually the same.
how do you specify which buffers should be floating?
Typically somewhere else in the CPU is the instruction register (IR).
Typically a decoder something like the 74HC138 decodes the "source field" from the instruction register into a bunch of nOE lines, one for each register.
The 74HC138 makes sure that at most one register drives the databus at any one time, so there's no conflict.
The 74HC138 holds the nOE of all the other registers high, so their output pins are effectively "disconnected" ("tristated", "disabled", etc.).
I wouldn't say their output pins are "floating" though -- each pin connected to some particular bit of the databus is being driven high or low by the one chip that is selected by the 74HC138.
A similar demultiplexer decodes the "destination field" from the instruction register into a bunch of CLK lines, one for each register,
and the CPU designer adds a little extra circuitry to pulse the clock at exactly the right instant, a little after the data has stabilized on the bus, and a little before some other source register has selected and the data begins changing again.
every signal throughout the system will be driven by exactly one device at all times.
That could work.
However, in practice,
I've never seen a register file -- on a monolithic IC, or built out of TTL chips, or built out of even simpler components -- built entirely out of cascading muxes. The ones I've seen always include at least one bidirectional 3-state bus somewhere.