Thanks for the great write up! I guess I could do something similar for a clear domed button. But the Strike a light buttons look like they have about 15 LED's each, so it's probably at least a couple hours of work to wire up each button.
So far, this: https://www.adafruit.com/product/1187 looks like the closest starting point for such a project.
If you're going with 100mm (4") buttons, you will want more than one RGB LED, but 15 separate LEDs seems like overkill
unless you mean 5 separate RGB LEDs. (15 channels)
Even 5 RGB's per button will be a huge challenge. 15 channels * 16 buttons = 240 channels.

- It will be a lot easier if you can get away with 3 RGB's per button. 9 channels * 16 buttons = 144 channels.
What type of LED controller do you plan to use?
- The IPac Ultimate I/O has 96 channels.
- The PacLED64 has 64 channels.
- Not sure if they can be used together as-is or if Andy has alternate firmware(s) for using several boards together.

-------------
Might be a lot easier to use neopixel rings like
this project on Adafruit.
You'll need an LED controller for addressable (WS2812B or SK6812) LEDs.
You can connect the data lines for the rings in series. Data out from controller to data in on ring 1, data out from ring 1 to data in on ring 2 . . .
- No idea how to configure the LED controller software to put the data in the right order.
- Looks like the protocol can send the commands fast enough that the data shifting through the chain probably won't be a distraction.
16 RGB LEDs/ring * 16 buttons = 256 LEDs.
256 LEDs * 24 bits per LED = 6144 bits per refresh.
6144 bits * 1.25 microseconds per bit (?) = ~7.68ms for the data to flow through all of the LEDs.
-------------
Considering how many buttons you'll need for this build, you might want to check Amazon for some better deals like
this.

Scott
EDIT: Changed from 24 LED ring to 16 LED ring.