I've decided to do my own tikz-based version, mostly because the actual quality of the output is better even compared to a properly scalable glyph. It has no limitations as to how many "annotated lines" you can add, and you get fine-grained support for the typography inside each circle.
%\newcommand{\mynumold}[1]{{\addfontfeature{Numbers=OldStyle}#1}}
\newcommand{\mynumold}[1]{{\oldstylenums{#1}}}
\newcounter{lstNoteCounter}
\newcommand*\lnnum[1]{\tikz[baseline=(char.base)]{
\node[shape=circle,draw,inner sep=0.8pt,
fill=black, text=white] (char) { \rmfamily\bfseries\footnotesize#1};}}
\newcommand*{\lnote}{\stepcounter{lstNoteCounter}\llap{{\lnnum{\thelstNoteCounter}}\hskip 6em}}
\lstnewenvironment{annotatedcsource}[1][]
{
\setcounter{lstNoteCounter}{0}
\lstset{
frame=lines,
framexleftmargin=0.5em,
framexrightmargin=0.5em,
basicstyle=\ttfamily\footnotesize,
numberstyle=\normalsize\itshape\mynumold,
backgroundcolor=\color{LemonChiffon1},
showstringspaces=false,
numbers=left,
escapeinside={(*@}{@*)},#1}
}
{}
This is the output:

Currently it has some issues:
- The size of the circle might break the way the background is displayed. This won't show up if it's white, but the spacing between the affected line and others is affected either way. One workaround is to make it larger to accommodate more space, choose a smaller font size for the circle text or some such.
Also, sorry about the garbled code block. See for yourself and adjust the hline spacing.
Update: I have posted the following question looking for answers on how to properly solve the alignment problems (so far I've solved the background display through the overlay feature):
Position tikz pictures at left margin of a listing code block
numbers=left,numbersep=3emto push the regular line numbers further left. – Werner Apr 12 '12 at 05:08