Your approach looks correct to me. At this point, there might be some optimizations to minimize queries and reduce bandwidth. Here are a few ideas:

The List/Statuses query has SinceID/MaxID, which means you can do paging. Even more interesting is that keeping track of your SinceID for a User/List combination will keep you from reading tweets that you already have. So, when you get a tweet for that
user/person, you can save it and optimize with SinceID.

Looping sounds like it performs worse than a lookup. Once you have statusList, you might be able to build a key to do a ToDictionary or ToLookup and then do a query off the cached dictionary. This would depend on how current you want tweets and your performance/memory
trade-off.

I'm not sure what application you're building, but another possibility is to run a UserStream on behalf of each user. This gives you their tweets in real-time. Then just do a query on their timeline if the stream temporarily stops or needs to be restarted.
You can still use the list to query user IDs of the members with a List/Members query.