I don't know about #3 below, but #1 and #2 are certainly true.
I always preferred to run a vanilla stable kernel as I did not
trust the vendors' kernels because their patches were not as well
eyed as the vanilla kernel. I prefer to compile a kernel for
my specific machines, some of which are old and do better with a
hand-configured kernel rather than a Microsoftian monolith that
is compiled with all possible options as modules.
Nevertheless, it would be nice to see a no-new-features, stable series
spun off from these development kernels, maybe .4th number releases,
like 2.6.10 also becomes a 2.6.10.0 that starts a 2.6.10.1, then 2.6.10.2,
etc...with iteritive bug fixes to the same kernel and no new features
in such a branch, it might become stable enough for users to have confidence
installing them on their desktop or stable machines.
It wouldn't have to be months upon months of diverging code, as jumps
to a new stable base can be started upon any fairly stable development
kernel, say 2.6.10 w/e100 fixed, tracing fixed, the slab bug fix, and
the capabilities bugs fixed going into a 2.6.10.1 that has no new features
or old features removed. Serious bug fixes after that could go into a
2.6.10.2, etc. Such point releases would be easier to manage and only
be updated/maintained as long as someone was interested enough to do it.
The same process would be applied to a future dev-kernel that appears to be
mostly stable after some number of weeks of alpha testing. It may be
the case that a given furture dev-kernel has no stable branch off of it
because it either a) didn't need one, or b) was too far from stable to start
one.
3) In some cases the commercial vendors don't seem to release
source to some of the kernels except to people who have bought
the packages, so those vendor kernel fixes aren't 'publically'
visible.