Yeah, such a thing is possible.
The actual issue isn't how long of a program you want (5 minutes), but how many blinks you want. You could get 400-500 blinks, but every rest longer than about 2 seconds would count as another blink. (~500 bytes, each byte 1-255 representing a waiting period, giving one flash after 1/120 seconds to 255/120 seconds). A 0 byte would encode a full wait with no action.
You'll have problems with synchronization/starting, though. Starting with a tap would be a good option, but the onboard clocks aren't perfect.
Ideally you'd synchronize the entire thing with a central controller, in which case memory isn't an issue; you simply program the lights to blink when they receive the correct signal.