Nice. I would say "does" rather than "seems to". If you followed through the original code, the problem shows up fairly soon for what it is. Even though it took me awhile to notice. 
Here
unsigned long pressedTime[8] = {0,0,0,0,0,0,0,0};
and the similar initial values for the global arrays can be eliminated. These variables are assured to be 0 and false. I like to eliminate as much ink as possible, and everyone should know that those will be zero or false as the case may be anyway.
Sometimes a redundant or unnecessary initial value can be used to make a point.
One small other change of no consequence is to write two loops. I like to get the update method for objects took care of right away, then write the other loop just as it is minus the update call, for this library the loop() method, so like
for (int i = 0; i < (NUMBER_BUTTONS); i = i + 1) {
button[i].loop();
}
for (int i = 0; i < (NUMBER_BUTTONS); i = i + 1) {
// other stuff
It makes a better fit with separating input, processing and output as three steps your loop() makes each pass.
It's called the IPO Model, see it in theoretical terms here:
IPO Model
Also, a few places you write
i = i + 1
which believe it or not made me slow down and think, it just looks so odd compared to using C's increment operator
i++
like
for (int i = 0; i < (NUMBER_BUTTONS); i++) {
When you get to incrementing more complicated entities, using the increment operator saves time and typing mistakes and makes code easier to read.
The next big thing you might enjoy learning how to exploit is structured variables. They allow you to package up a bunch of things that might want to travel around together, so rather than a half dozen or so arrays you could have one array of structured variables, each having its own set of variables.
With this sketch it might actually be overkill and make things less clear; at some point the extra burden of some new pesky syntax will be worth the benefit of switching.
google
arduino struct
or
C struct variables
and find things like this competent and gentle introduction
HTH
a7