You're very close- most used the National Semiconductor DP8390 Ethernet chip. The NE2000 is essentially Novell's build of the DP8390 reference design from the datasheet.
Why not just write new ones? Have you ever looked at an Ethernet driver? I have. The Ungermann-Bass card for my IBM RT is made of pure unobtanium, so I decided to see about making a 3Com 3C509 work in it, since the RT just has normal ISA slots. The first thing I did was find the documentation for the 3C509 to get a feel for how drivers interact with it. It turned out to be quite simple: you basically just used a certain I/O port to send commands to, and another for reading/writing packets out of the controller's onboard buffers, and a few others for miscellaneous things like status. It didn't really sink in to me until I read the manual that Ethernet cards, for the most part, do precisely three things: send a packet, receive packets back, and report problems.
Most of the low level details are handled within the controller itself, you just load its buffer up with the packet you want to send, and then poke the command register to send it. When a packet comes in that matches its MAC, a group MAC, or a broadcast MAC (in normal usage), the controller fires off an interrupt when it receives the packet, you attach an interrupt handler in the driver to receive it, shut off the interrupt, then poll the status register to see what kind of interrupt it is (received packet, packet CRC error, collision detected, etc), then copies the contents of the packet from the controller's buffer into RAM, tells the controller it finished copying the packet, then repeat the status register poll, if no more work to do, switch the interrupt back on and exit the interrupt handler routine.
Most of the actual difficulties are handled further up the food chain by the networking stack, the driver's job is just to take Ethernet packets to/from the controller and the networking stack and report problems occurring (it's not expected to process them or take corrective action, just report them to further up the food chain)
That's it! If you've ever done microcontroller stuff a bit, particularly with interrupts, you pretty much know almost everything needed to write a network driver.
I'm not promising anything right now, but. I mention the CS8900A because I've read the chip's datasheet, it's readily available, and has a native 16 bit ISA interface. Everyone forgets that ISA is just a fairly typical 16 bit parallel handshaking-controlled asynchronous bus, not very far off from PDS at all, just slower. That's okay though, because the 68k bus works like that too, you just use DTACK to insert wait states (or rather, by holding off on DTACK). You just need to sort out a few control lines and decoding logic between the PDS bus and the network controller, plus the driver.
I mention this because I have been toying around with the idea of making new Ethernet cards for 68k Macs for the past two or three weeks.
Edit: also, NDIS is the Windows network card driver API. It's so simple that various open source OSes have "wrappers" that allow NDIS wrappers to run on them. That is how simple Ethernet drivers are.