Damn, I have several RTCs around. My clock was off 30 minutes after half a year - which has to be considered quite good when asking around; many RTCs are that bad in less than a month.
When I returned from work and took a look at the board I used, I had to laugh: It's a DS1302. And what do you guess, as if I knew about this thread back then, that China board is real ghetto style. The DS1302 as DIP version, a 32.768kHz crystal (unclear whether it is matched to suite 6pF) and a battery. That's all, no additional components. According to the data sheet, that should work. But it doesn't (properly).
What I did now is: Add 100nF+1µF ceramic capacitor to Vcc2 (-> power from µC). Added 100nF for Vcc1 (battery). Put a big solder blob below the crystal. As GND is the plane on the other PCB side, used an enameled copper wire connection to contact that blob to GND.
Additionally replaced some dupont wires with enameled copper wires so the distance is reduced; in fact, I isolated the backside of the Arduino board and taped the RTC board against it. Now only the 4-digit 7-segment has 8 dupont wires left; the common cathodes are connected with enameled copper wire now, too.
For now the result looks good. Set the time around 7P.M., now three hours later there is no noticable drift from the 12-13 seconds I set it too late. Have to watch it a few days though.
Edit: 12 hours later, I see 1-2s drift again; would sum up to ~4s/day, 2 minutes/month, 12 minutes/half year and thus be an improvement at least. I'll keep on monitoring and probably will update this post later again
Took the time to clean up the code I used back then. I had it nearly right, doing stuff between several timestamps (milliseconds) - but did that in the ISR instead of the mainloop. A few more volatile variables later, this is close to proper code now