A good place to begin, Phillippe, is by converting the bus routes to an indicator grid: NoData for cells not on a route, actual values (which can be anything) for cells on routes. Perform the same conversion for walking access. Let's call these grids "bus" and "walk", respectively.
Combining is easy, as I will show below, but you have to decide what impedance to assign to cells that can be ridden and walked. Because this is a highly approximate calculation anyway (you're not accounting for bus waiting times, for time on stairs or elevators, time to cross streets, for self-intersecting bus routes, for the discrete locations of bus stops, for one-way traffic, for traffic stops or congestion, etc.), you would likely just want the bus impedance to have the priority. In other words, you want to create a grid consisting of the walking impedance where walking alone is possible and otherwise will have the riding impedance wherever a bus route exists.
The combination I have described can be carried out in many ways; a general and efficient one is
[INDENT]Con( IsNull( [bus] ), ([walk] == [walk]) * 0.0284, 0.0057 )
[/INDENT]The mysterious expression [walk] == [walk] simply converts the values of the walking indictor grid to 1's and NoData; multiplying by 0.0284 replaces the 1's by the desired walking impedance.
This solution automatically places NoData values outside the bus routes and walkways.
People can do crazy things, Phillippe, but even so these protected spaces will slow them down. Just give them an impedance substantially larger than the walking impedance. Even twice the impedance will do fine.
One way to handle pedestrian street crossings a little better is to put a relatively large impedance in the streets (but not on the sidewalks). This will increase the calculated time to cross streets and will produce routes that cross streets perpendicularly rather than diagonally. With some care you can even place a separate much larger impedance in the middle of each block (away from the corners) to discourage jaywalking. (This is probably overkill but it illustrates the possibilities available to you.)
Do you suppose a small buffer of the streets would work, Phillippe? At your 5-foot cellsize, a three- or four-cell buffer would be a pretty accurate representation of the sidewalks. Create such a buffer using Expand.