How far apart are these things? Aside from independent processing, this sounds like things are physically far apart. If we're talking more than 10 feet then there may be some serial communication issues; I2C was not designed for that.
Forgive me if I'm pointing out the obvious, but I2C is just a synchronous hardware communication method as is SPI, and at the pin level the voltages are just that of logic levels. Fine for short runs between devices on the same PCB, or short runs between boards inside one box.
Doing longer runs for serial communications typically requires specific interface/driver circuitry. As an example, if you were using the USART in the Arduino and the standard Serial library to just do asynchronous communications (think RS232, 115200,N,8,1 for example), unless you're using the USB host or RS232 port which is already on the Arduino board, you'd also need an RS232 transceiver chip (MAX232 for example) to drive that 50 foot cable. RS232 isn't the way to go for you however as this is not a multiple-devices-same-bus interface method.
Serial communications over cables over distance invariably involve the use of line transceiver devices. If you feel like doing some homework, google RS422 and RS485 or a specific device, the LTC1535. NOTE that these are used for asynchronous communications (which the Arduino can handle) and multiple transceivers can be tapped into a twisted wire pair (TXD and RXD) BUT (caution) you may have to develop your own Software collision detection algorithm to keep multiple devices from trying to talk at the same time, or to perform handshaking otherwise.
One ugly way to resolve serial communications with multiple devices same cable, is to use a 3 conductor cable with the appropriate transceivers for TXD and RXD, and the third line (say it's normally pulled high), is pulled low by whichever device wishes to broadcast. Any or all devices wishing to broadcast would check the status of this line before doing so, and if it's pulled low, they instead "listen". Software communication with hardware handshaking. Follow me?
Alternatively if using the existing onboard USB port of your Arduino board, this can already handle a 6 or 15 foot cable probably without issue, but you'd need a hub of sorts to bring multiple devices together. Me thinks that this might be a candidate for a WLAN solution, so by all means check out the XBEE modules and the Ethernet shields.
But back to your IIC line of thoughs, this is typically used for half-duplex communication with serial memory devices and such, where the MASTER controls the clocking. If you have 25 devices that are just "slaves" and one "master", these could in theory be daisy-chained over a long cable if the appropriate transceivers (driving impedance bandwidth cable impedance termination yadda yadda) are also used; but as far as I understand IIC communications was not designed for this; Read up on RS422/485, USB or Ethernet I suppose, as what you're kinda describing if not what could aptly be described as suited to an asynchronous communications application might be loosely described as a "network" of sorts; there are "network" shield solutions for the Arduino boards that are already plug & play.
BTW you might read up on Network topologies; one cable many devices describes a bus or ring topology and "token ring" is one method of bus arbitration (you said you know Software ;))
Still to clarify (that others might perhaps help if all I've done is create confusion), do you wish for your 25 devices to just be slaves and the master queries them, or do you need the devices to also be able to talk to one-another on the same bus...
Trying to avoid multiple cables is a matter of practicality, or trying to avoid cables with many conductors likewise. Still, many devices physically separated but otherwise interconnected, perhaps I2C is just not suitable for what you're trying to accomplish. Maybe network the devices instead either wireless or Ethernet using the Arduino shields that you can readily obtain for this purpose instead. The former involves a retail wireless router, the latter involves a retail switch or hub.
Your project ultimately sounds like a "money is no object" application if deployed, so rather than trying to make this work on a dime using I2C, consider the Arduino and third party networking solutions (even wireless perhaps) available instead.
In closing you mention that a Computer will be used to control all of this; if all your little Arduinos are simply networked visa vis the shields alluded to (all wireless, 802.11 b/g/n router quick and easy), or all wired, Ethernet hub/port/switch, again with the cables but CHEAP DIY CAT-5 cables, buy the RJ-45 ends, buy a crimper, buy a 500 foot roll of the cable), controlling all of these should be a cake-walk 
No point in trying to save money on cable, if this involves 8 months of R&D to just get the darned thing to work 
Will power be a problem? HMM... interesting question. If ALL of the devices are powered by one (mains powered) power supply then this supply need only be adequate to power all of them. But if the devices are physically separated, it might be more practical for each to have its own (small) power supply, such as a wall-wart or plug-in adapter if you will. WARNING! Most adapters or little plug-in power supplies do not have a Ground on them, some use a polarized plug, and some do not. This polarized plug in of itself is for safety purposes, but such devices (adapters) and their non-polarized equivalents entail step-down transformers typically have isolated Primary and Secondary windings, and the output is not Neutral referenced and certainly not ground referenced. Typically the output voltage is "floating" with respect to Ground, ground being earth ground, which your building wiring is directly connected to.
If you have say two devices operating with similar voltages, both of which are powered by an AC-DC adapter or wall-wart that doesn't have a Ground on it (the design of which usually predicates a floating output), you could develop ground-loop problems (where power flows from one device to another inappropriately) if not noise problems. More specifically, two devices running on 5V (isolated) supplies both output a logic 1 to the same conductor; no current should flow given that the amplitude is the same, therefore no voltage drop, but if there is any dissimilarity in voltage produced by either adapter (neither of which HAS a reference), then current might flow. Ohm's Law my friend.
There are ways around this with interfacing and communication between independently powered devices (to avoid ground-loop problems) typically using Optoisolators and such, and I leave research into this at your discretion.
Solution? if using multiple power supplies with isolated outputs, tie their DC grounds together; not via cable shield foil (foil is to be grounded for shielding purposes, but is not intended for current carrying applications). Ground otherwise isolated DC power supplies either by common chassis ground bus which connects (wired) to multiple chassis, and eventually to Earth ground. A dedicated Ground conductor is entailed. Otherwise, ground all devices to the Earth ground provided visa vis the AC mains supply (the outlets). Better yet, don't use "isolated" or "floating output" supplies period, and avoid the grounding issue (BTW google Ground Loop). It's up to you to figure out which is what, as this is typically not specified when buying a cheap plug-in power supply at the retail level which comes in a box, but suffice it to say that if it doesn't have a third prong (ground), you'll need to perform extra measures to use more than one of them with separate devices.
Sorry for sounding pedantic, but I think that perhaps you should research some things and consider alternatives to using I2C, and I hope I've given you something to think about as far as power supplies go.
DHM