Would a 3mA current source really do a much better job than a resistor sized to allow 3mA to flow?
Yes, about halving the risetime. Expect something like this:

Why doesn't the I2C spec suggest this? It suggests buffers and switched pullups and other things:
http://www.nxp.com/documents/user_manual/UM10204.pdf
Probably because it's not necessary. I2C is
Inter-Integrated Circuit, i.e., only within a board, or spanning one or two with a short connection (board-to-board header or short ribbon).
It's definitely not suitable under conditions of unshielded cables and IEC 61000-4-3 susceptibility testing.
They also show bridges for other methods.
SPI over three RS-422 pairs is an excellent method for unshielded cables; or RS-232 (with suitable filtering at RX) for slow channels, or most anything (bare logic, USB, etc.) for shielded cables.
The lesson: so many signaling standards exist, for good reason! There are many sources of interference, and many applications that need more or less bandwidth and reliability.
That being said, since I would need two of these for each data line, that's four transistors and eight resistors, and with PCB space at a premium I'd be lucky to find room for two transistors, let alone all the rest.
Nah, only two transistors. Well, you can use the "ring of two" if you like, but resistors are dumber, and almost always good enough.
You can use a circuit like this,

The top half (22 ohm's, 470 and 2.2k) is current sourcing. You can't use this directly, because when one source saturates (pulls all the way to +V), it disables the other. In this circuit, it's a feature, not a bug, but you just need two base voltage dividers, that's all.
You'd also use larger resistors, since you don't need the 10-20mA this thing makes!
I wonder if that single jfet with resistor would do the job?
For a long time, single JFETs were selected, and packaged as diodes -- CRDs. They're terribly botique, and JFETs are pretty thin on the ground as well.
Better to go with the BJT circuit.
You can even take advantage of the BJT's hFE (i.e., current gain), and use only one resistor (for base bias), no emitter resistor or divider. This is tricky, though: you need to use hFE-binned transistors (which are available cheaply, though!), and the tempco is awful (you get about double current at maximum temperature, and you need to make sure the transistor won't cook itself in the process).
Or, I could perhaps find an inexpensive chip that acts as a constant current source? I've been using one chip that's the size of a single FET that requires only one external current set resistor and provides a constant current supply, which I use for high power LEDs. I suspect some may exist that are designed for lower currents. I guess I'll have a look on Digikey.
Hmm, possible. Obviously a high efficiency (switching) type won't work.

Tim