This is suspect:
// Clear INT flags
EIFR = bit (INTF0); // clear flag for interrupt 0 (PIN D2)
EIFR = bit (INTF1); // clear flag for interrupt 1 (PIN D3)
The first writes a 0 to the D3, and a 1 to the D2 interrupt. The second does the opposite. So that may trigger the second interrupt you see.
You should write only those two specific bits to the register, without affecting any other bits. Try this instead:
EIFR |= ((1 << INTF0) | (1 << INTF1)) ; // clear flag for interrupt 0 (PIN D2) and interrupt 1 (PIN D3).
That code writes a 1 to the INTF0 and INTF1 bits, without affecting any other bits in the register. The brackets are redundant, just added them for easier readability.