No need to curse. That's the recommended method for those that want to build kernels based on GENERIC, in such a way that any updates to GENERIC are also updates to their kernel.

Just include GENERIC in the config file. Any devices/options you don't want, you disable via nodevice/nooption. That way, when devices/options are added to GENERIC they are automatically added to your custom kernel as well.

Leave i586. It enables some in-kernel copy speedup functions. Improves memory allocations and copying of data around in the kernel. Don't remember the specifics of it, but it's faster than just i686.

Are you sure, do you have more information about this?
Only interesting info I found is about npx(4) and i586, and that is applicable for older machines. I use core2 CPU without i586, and performance is not decreased comparing with GENERIC.

It might be "obsolete" in that it is old, but there hasn't been any mention of enabling bcopy and similar operations in the FreeBSD kernel when using I686_CPU. Granted, this may not make a difference on Athlon64/Opteron/Core/Core2 CPUs. I haven't heard/read anything about this subject since that thread, though. Guess someone with access to a few different CPUs will have to benchmark kernels with combinations of I586_CPU and I686_CPU.