Next, I tried restoring the router's configuration to "factory" defaults. It still wasn't able to get a lease. Finally, I tried reloading from a backup of the firmware settings, and then the router was finally able to get a DHCP lease.
I'm not sure, but it is quite possible that the problem was actually on the Comcast side and not with the router. Until this incident, the router's uptime was over 30 days.
Also, I discovered a workaround for fixing the time drift. On the Administration->Management page, I added this to cron:
0 1 0 0 0 /usr/sbin/ntpclient -c 1 -s -h 0.us.pool.ntp.org