I actually had an analogous error occur in my setup recently when I reconfigured it due to a gear swap.
The double-NAT message is designed as a warning of a possible pathological network setup, but I think it's irrelevant, especially as you say you've been running this setup for a while. In fact, many ISPs are using NAT these days on their DSL or cable modems, where each customer is already "behind the router", so to speak, even with a single device connected directly to the modem. As soon as the customer adds a wireless router for their home, they are in a double-NAT situation. And that seems to be working just fine for most people, obviously.
According to my research, it seems as though there are some applications, largely industrial-grade VPNs and other applications that manipulate data at the lower layers of the OSI stack that might hiccup if they start poking around inside the packets. A particular Cisco VPN + Firewall setup is one example I came across. As another example, the reliability of certain implementations of VoIP in a double-NAT environment seemed to be a matter of some debate.
As you point out, it will almost certainly will introduce some small amount of additional latency due to the extra hop and the work being done by each router, but unless you're a competitive gamer... meh.
Edit: As Kevin points out below, UPnP is also likely to freak out in a double-NAT scenario, but the Airport Extreme which prompted the question doesn't support UPnP anyway.
The message:
There is a "Double NAT" in the network. This AirPort base station has a private IP address on its Ethernet WAN port. It is connected to a device or network that is using Network Address Translation to provide private IP addresses.
is purely a warning message, which you can safely disregard altogether.
The annoying feature of this configuration is that none of the devices on the 192.168.0.0/24 network will be able to talk to those on the 192.168.1.0/24 network. In other words, right now they represent two distinct subnets. You may keep this configuration, if this is of no concern to you.
Alternatively, you may wish to integrate all of your components into a single subnet. You may obtain this in this way (the order of these operations matters):
1.connect to the Airport, and disable DHCP;
2.unplug the ethernet cable from the WAN side of the Airport, and plug it into the LAN side.
3.open the GUI of the main router, and change the mask of the LAN, from 255.255.255.0 to 255.255.254.0.
4.Turn off everything;
5.turn on the router, count to five, turn on all of the devices in whichever order.
By doing this, you will have established a twice-as-large network, with these properties (output of ipcalc):
# ipcalc 192.168.0.0/23
Address: 192.168.0.0 11000000.10101000.0000000 0.00000000
Netmask: 255.255.254.0 = 23 11111111.11111111.1111111 0.00000000
Wildcard: 0.0.1.255 00000000.00000000.0000000 1.11111111
Network: 192.168.0.0/23 11000000.10101000.0000000 0.00000000
HostMin: 192.168.0.1 11000000.10101000.0000000 0.00000001
HostMax: 192.168.1.254 11000000.10101000.0000000 1.11111110
Broadcast: 192.168.1.255 11000000.10101000.0000000 1.11111111
Hosts/Net: 510 Class C, Private Internet
This way you will have defeated the dearth of IP addresses, while still keeping all of your devices into the same subnet. Turning everything off and on again forces the introduction of the new mask, and the new routing table.
This works provided you do not have static IPs. If instead you do, you will have to manually adjust the mask to reflect its new value, on each device.
Best Answer
If your Raspberry Pi is doing NAT, then you don't need to have your AirPort base station do NAT. Disable NAT on the AirPort base station; on the "Network" tab, set its "Router Mode" to "Off (Bridge mode)".